[llvm] r320116 - [ORC] Mark SymbolStringPool methods as inline to avoid linkage errors, add a
Lang Hames via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 7 15:32:11 PST 2017
Author: lhames
Date: Thu Dec 7 15:32:11 2017
New Revision: 320116
URL: http://llvm.org/viewvc/llvm-project?rev=320116&view=rev
Log:
[ORC] Mark SymbolStringPool methods as inline to avoid linkage errors, add a
less-than comparison to SymbolStringPtr and a corresponding unit test.
Modified:
llvm/trunk/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h
llvm/trunk/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp
Modified: llvm/trunk/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h?rev=320116&r1=320115&r2=320116&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h (original)
+++ llvm/trunk/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h Thu Dec 7 15:32:11 2017
@@ -88,6 +88,10 @@ public:
return !(*this == Other);
}
+ bool operator<(const SymbolStringPtr &Other) const {
+ return S->getValue() < Other.S->getValue();
+ }
+
private:
SymbolStringPtr(SymbolStringPool::PoolMapEntry *S)
@@ -99,7 +103,7 @@ private:
SymbolStringPool::PoolMapEntry *S = nullptr;
};
-SymbolStringPtr SymbolStringPool::intern(StringRef S) {
+inline SymbolStringPtr SymbolStringPool::intern(StringRef S) {
std::lock_guard<std::mutex> Lock(PoolMutex);
auto I = Pool.find(S);
if (I != Pool.end())
@@ -111,7 +115,7 @@ SymbolStringPtr SymbolStringPool::intern
return SymbolStringPtr(&*I);
}
-void SymbolStringPool::clearDeadEntries() {
+inline void SymbolStringPool::clearDeadEntries() {
std::lock_guard<std::mutex> Lock(PoolMutex);
for (auto I = Pool.begin(), E = Pool.end(); I != E;) {
auto Tmp = std::next(I);
@@ -121,13 +125,12 @@ void SymbolStringPool::clearDeadEntries(
}
}
-bool SymbolStringPool::empty() const {
+inline bool SymbolStringPool::empty() const {
std::lock_guard<std::mutex> Lock(PoolMutex);
return Pool.empty();
}
} // end namespace orc
-
} // end namespace llvm
#endif // LLVM_EXECUTIONENGINE_ORC_SYMBOLSTRINGPOOL_H
Modified: llvm/trunk/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp?rev=320116&r1=320115&r2=320116&view=diff
==============================================================================
--- llvm/trunk/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp (original)
+++ llvm/trunk/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp Thu Dec 7 15:32:11 2017
@@ -15,7 +15,7 @@ using namespace llvm::orc;
namespace {
-TEST(SymbolStringPool, UniquingAndEquality) {
+TEST(SymbolStringPool, UniquingAndComparisons) {
SymbolStringPool SP;
auto P1 = SP.intern("hello");
@@ -27,6 +27,11 @@ TEST(SymbolStringPool, UniquingAndEquali
EXPECT_EQ(P1, P2) << "Failed to unique entries";
EXPECT_NE(P1, P3) << "Inequal pooled symbol strings comparing equal";
+
+ // We want to test that less-than comparison of SymbolStringPtrs compiles,
+ // however we can't test the actual result as this is a pointer comparison and
+ // SymbolStringPtr doesn't expose the underlying address of the string.
+ (void)(P1 < P3);
}
TEST(SymbolStringPool, ClearDeadEntries) {
More information about the llvm-commits
mailing list