[PATCH] D50150: Require users to opt into DebugCounting
George Burgess IV via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 2 12:51:07 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL338762: [Support] Add an enable bit to our DebugCounters (authored by gbiv, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D50150?vs=158566&id=158821#toc
Repository:
rL LLVM
https://reviews.llvm.org/D50150
Files:
llvm/trunk/include/llvm/Support/DebugCounter.h
llvm/trunk/lib/Support/DebugCounter.cpp
Index: llvm/trunk/lib/Support/DebugCounter.cpp
===================================================================
--- llvm/trunk/lib/Support/DebugCounter.cpp
+++ llvm/trunk/lib/Support/DebugCounter.cpp
@@ -82,6 +82,7 @@
<< " 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 @@
<< " is not a registered counter\n";
return;
}
+ enableAllCounters();
Counters[CounterID].StopAfter = CounterVal;
Counters[CounterID].IsSet = true;
} else {
Index: llvm/trunk/include/llvm/Support/DebugCounter.h
===================================================================
--- llvm/trunk/include/llvm/Support/DebugCounter.h
+++ llvm/trunk/include/llvm/Support/DebugCounter.h
@@ -70,10 +70,9 @@
return instance().addCounter(Name, Desc);
}
inline static bool shouldExecute(unsigned CounterName) {
-// Compile to nothing when debugging is off
-#ifdef NDEBUG
- return true;
-#else
+ if (!isCountingEnabled())
+ return true;
+
auto &Us = instance();
auto Result = Us.Counters.find(CounterName);
if (Result != Us.Counters.end()) {
@@ -93,7 +92,6 @@
}
// Didn't find the counter, should we warn?
return true;
-#endif // NDEBUG
}
// Return true if a given counter had values set (either programatically or on
@@ -142,7 +140,23 @@
}
CounterVector::const_iterator end() const { return RegisteredCounters.end(); }
+ // Force-enables counting all DebugCounters.
+ //
+ // Since DebugCounters are incompatible with threading (not only do they not
+ // make sense, but we'll also see data races), this should only be used in
+ // contexts where we're certain we won't spawn threads.
+ static void enableAllCounters() { instance().Enabled = true; }
+
private:
+ static bool isCountingEnabled() {
+// Compile to nothing when debugging is off
+#ifdef NDEBUG
+ return false;
+#else
+ return instance().Enabled;
+#endif
+ }
+
unsigned addCounter(const std::string &Name, const std::string &Desc) {
unsigned Result = RegisteredCounters.insert(Name);
Counters[Result] = {};
@@ -159,6 +173,10 @@
};
DenseMap<unsigned, CounterInfo> Counters;
CounterVector RegisteredCounters;
+
+ // Whether we should do DebugCounting at all. DebugCounters aren't
+ // thread-safe, so this should always be false in multithreaded scenarios.
+ bool Enabled = false;
};
#define DEBUG_COUNTER(VARNAME, COUNTERNAME, DESC) \
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50150.158821.patch
Type: text/x-patch
Size: 2644 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180802/b4e07042/attachment-0001.bin>
More information about the llvm-commits
mailing list