diff options
-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; |