diff options
-rw-r--r-- | llvm/include/llvm/ADT/DenseSet.h | 6 | ||||
-rw-r--r-- | llvm/unittests/ADT/DenseSetTest.cpp | 15 |
2 files changed, 21 insertions, 0 deletions
diff --git a/llvm/include/llvm/ADT/DenseSet.h b/llvm/include/llvm/ADT/DenseSet.h index 21f7dfa3321..b25d3b7cba6 100644 --- a/llvm/include/llvm/ADT/DenseSet.h +++ b/llvm/include/llvm/ADT/DenseSet.h @@ -15,6 +15,7 @@ #define LLVM_ADT_DENSESET_H #include "llvm/ADT/DenseMap.h" +#include <initializer_list> namespace llvm { @@ -55,6 +56,11 @@ public: explicit DenseSetImpl(unsigned InitialReserve = 0) : TheMap(InitialReserve) {} + DenseSetImpl(std::initializer_list<ValueT> Elems) + : DenseSetImpl(Elems.size()) { + insert(Elems.begin(), Elems.end()); + } + bool empty() const { return TheMap.empty(); } size_type size() const { return TheMap.size(); } size_t getMemorySize() const { return TheMap.getMemorySize(); } diff --git a/llvm/unittests/ADT/DenseSetTest.cpp b/llvm/unittests/ADT/DenseSetTest.cpp index 8397c60a97c..4d5a82902f0 100644 --- a/llvm/unittests/ADT/DenseSetTest.cpp +++ b/llvm/unittests/ADT/DenseSetTest.cpp @@ -64,6 +64,21 @@ typedef ::testing::Types<DenseSet<unsigned, TestDenseSetInfo>, DenseSetTestTypes; TYPED_TEST_CASE(DenseSetTest, DenseSetTestTypes); +TYPED_TEST(DenseSetTest, InitializerList) { + TypeParam set({1, 2, 1, 4}); + EXPECT_EQ(3u, set.size()); + EXPECT_EQ(1u, set.count(1)); + EXPECT_EQ(1u, set.count(2)); + EXPECT_EQ(1u, set.count(4)); + EXPECT_EQ(0u, set.count(3)); +} + +TYPED_TEST(DenseSetTest, EmptyInitializerList) { + TypeParam set({}); + EXPECT_EQ(0u, set.size()); + EXPECT_EQ(0u, set.count(0)); +} + TYPED_TEST(DenseSetTest, FindAsTest) { auto &set = this->Set; // Size tests |