summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/DebugCounter.cpp
diff options
context:
space:
mode:
authorGeorge Burgess IV <george.burgess.iv@gmail.com>2018-08-02 19:50:27 +0000
committerGeorge Burgess IV <george.burgess.iv@gmail.com>2018-08-02 19:50:27 +0000
commit31da130e4dcce5a4fe72eb187db3e169cba4ec23 (patch)
tree96698bcb917dd6a412a4b2c2253ff9600a49910c /llvm/lib/Support/DebugCounter.cpp
parentdfd5fadcf20059df77478c658037e14162f43cb4 (diff)
downloadbcm5719-llvm-31da130e4dcce5a4fe72eb187db3e169cba4ec23.tar.gz
bcm5719-llvm-31da130e4dcce5a4fe72eb187db3e169cba4ec23.zip
[Support] Add an enable bit to our DebugCounters
r337748 made us start incrementing DebugCounters all of the time. This makes tsan unhappy in multithreaded environments. Since it doesn't make much sense to use DebugCounters with multiple threads, this patch makes us only count anything if the user passed a -debug-counter option or if some other piece of code explicitly asks for it (e.g. the pass in D50031). The amount of global state here makes writing a unittest for this behavior somewhat awkward. So, no test is provided. Differential Revision: https://reviews.llvm.org/D50150 llvm-svn: 338762
Diffstat (limited to 'llvm/lib/Support/DebugCounter.cpp')
-rw-r--r--llvm/lib/Support/DebugCounter.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Support/DebugCounter.cpp b/llvm/lib/Support/DebugCounter.cpp
index 5a9cecfc56d..9c12de0776a 100644
--- a/llvm/lib/Support/DebugCounter.cpp
+++ b/llvm/lib/Support/DebugCounter.cpp
@@ -82,6 +82,7 @@ void DebugCounter::push_back(const std::string &Val) {
<< " is not a registered counter\n";
return;
}
+ enableAllCounters();
Counters[CounterID].Skip = CounterVal;
Counters[CounterID].IsSet = true;
} else if (CounterPair.first.endswith("-count")) {
@@ -92,6 +93,7 @@ void DebugCounter::push_back(const std::string &Val) {
<< " is not a registered counter\n";
return;
}
+ enableAllCounters();
Counters[CounterID].StopAfter = CounterVal;
Counters[CounterID].IsSet = true;
} else {
OpenPOWER on IntegriCloud