diff options
author | Lang Hames <lhames@gmail.com> | 2018-04-02 21:39:39 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2018-04-02 21:39:39 +0000 |
commit | a82c25a43488db9eb58d9daf6dd550a205c28d7b (patch) | |
tree | 4a0be46229ee517167c370aceaf0e8ad710d6f7c | |
parent | e8f12eb95278c93bcdd365ad764846a7ed8af739 (diff) | |
download | bcm5719-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.h | 10 |
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; |