summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/unittests/ADT/DenseMapTest.cpp
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2017-01-24 08:32:59 +0000
committerpatrick <patrick@openbsd.org>2017-01-24 08:32:59 +0000
commit53d771aafdbe5b919f264f53cba3788e2c4cffd2 (patch)
tree7eca39498be0ff1e3a6daf583cd9ca5886bb2636 /gnu/llvm/unittests/ADT/DenseMapTest.cpp
parentIn preparation of compiling our kernels with -ffreestanding, explicitly map (diff)
downloadwireguard-openbsd-53d771aafdbe5b919f264f53cba3788e2c4cffd2.tar.xz
wireguard-openbsd-53d771aafdbe5b919f264f53cba3788e2c4cffd2.zip
Import LLVM 4.0.0 rc1 including clang and lld to help the current
development effort on OpenBSD/arm64.
Diffstat (limited to 'gnu/llvm/unittests/ADT/DenseMapTest.cpp')
-rw-r--r--gnu/llvm/unittests/ADT/DenseMapTest.cpp59
1 files changed, 10 insertions, 49 deletions
diff --git a/gnu/llvm/unittests/ADT/DenseMapTest.cpp b/gnu/llvm/unittests/ADT/DenseMapTest.cpp
index db00f8cf8e5..80f0462bc8f 100644
--- a/gnu/llvm/unittests/ADT/DenseMapTest.cpp
+++ b/gnu/llvm/unittests/ADT/DenseMapTest.cpp
@@ -496,55 +496,6 @@ TEST(DenseMapCustomTest, StringRefTest) {
EXPECT_EQ(42, M.lookup(StringRef("a", 0)));
}
-struct CachedHashTest {
- unsigned Val;
- unsigned *Counter = nullptr;
- CachedHashTest(unsigned Val) : Val(Val) {}
- CachedHashTest(unsigned Val, unsigned *Counter)
- : Val(Val), Counter(Counter) {}
-};
-}
-namespace llvm {
-template <> struct DenseMapInfo<CachedHashTest> {
- static CachedHashTest getEmptyKey() { return ~0; }
- static CachedHashTest getTombstoneKey() { return ~0U - 1; }
- static unsigned getHashValue(const CachedHashTest &X) {
- ++*X.Counter;
- return X.Val;
- }
- static bool isEqual(const CachedHashTest &LHS, const CachedHashTest &RHS) {
- return LHS.Val == RHS.Val;
- }
-};
-}
-namespace {
-
-TEST(DenseMapCustomTest, CachedHashTest) {
- unsigned Counter = 0;
- CachedHashTest Val(0, &Counter);
- DenseMap<CachedHashTest, int> Map;
-
- Map[Val] = 0;
- ASSERT_EQ(1u, Counter);
-
- Map.reserve(64);
- ASSERT_EQ(2u, Counter);
-}
-
-// Like above, but now cache the hash.
-TEST(DenseMapCustomTest, CachedHashTest2) {
- unsigned Counter = 0;
- CachedHashTest Val(0, &Counter);
- typedef CachedHash<CachedHashTest> Cached;
- DenseMap<Cached, int> Map;
-
- Map[Val] = 0;
- ASSERT_EQ(1u, Counter);
-
- Map.reserve(64);
- ASSERT_EQ(1u, Counter);
-}
-
// Key traits that allows lookup with either an unsigned or char* key;
// In the latter case, "a" == 0, "b" == 1 and so on.
struct TestDenseMapInfo {
@@ -619,4 +570,14 @@ TEST(DenseMapCustomTest, SmallDenseMapGrowTest) {
EXPECT_TRUE(map.find(32) == map.end());
}
+TEST(DenseMapCustomTest, TryEmplaceTest) {
+ DenseMap<int, std::unique_ptr<int>> Map;
+ std::unique_ptr<int> P(new int(2));
+ auto Try1 = Map.try_emplace(0, new int(1));
+ EXPECT_TRUE(Try1.second);
+ auto Try2 = Map.try_emplace(0, std::move(P));
+ EXPECT_FALSE(Try2.second);
+ EXPECT_EQ(Try1.first, Try2.first);
+ EXPECT_NE(nullptr, P);
+}
}