summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2018-04-02 21:39:39 +0000
committerLang Hames <lhames@gmail.com>2018-04-02 21:39:39 +0000
commita82c25a43488db9eb58d9daf6dd550a205c28d7b (patch)
tree4a0be46229ee517167c370aceaf0e8ad710d6f7c
parente8f12eb95278c93bcdd365ad764846a7ed8af739 (diff)
downloadbcm5719-llvm-a82c25a43488db9eb58d9daf6dd550a205c28d7b.tar.gz
bcm5719-llvm-a82c25a43488db9eb58d9daf6dd550a205c28d7b.zip
[ORC] Add a debugging check to catch dangling references to SymbolStringPools.
llvm-svn: 329019
-rw-r--r--llvm/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h b/llvm/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h
index da40d1caaab..de09c627a0b 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h
@@ -27,6 +27,9 @@ class SymbolStringPtr;
class SymbolStringPool {
friend class SymbolStringPtr;
public:
+ /// @brief Destroy a SymbolStringPool.
+ ~SymbolStringPool();
+
/// @brief Create a symbol string pointer from the given string.
SymbolStringPtr intern(StringRef S);
@@ -109,6 +112,13 @@ inline bool operator<(const SymbolStringPtr &LHS, const SymbolStringPtr &RHS) {
return LHS.S < RHS.S;
}
+inline SymbolStringPool::~SymbolStringPool() {
+#ifndef NDEBUG
+ clearDeadEntries();
+ assert(Pool.empty() && "Dangling references at pool destruction time");
+#endif // NDEBUG
+}
+
inline SymbolStringPtr SymbolStringPool::intern(StringRef S) {
std::lock_guard<std::mutex> Lock(PoolMutex);
PoolMap::iterator I;
OpenPOWER on IntegriCloud