Index: llvm/trunk/include/llvm/ADT/DenseSet.h =================================================================== --- llvm/trunk/include/llvm/ADT/DenseSet.h +++ llvm/trunk/include/llvm/ADT/DenseSet.h @@ -15,6 +15,7 @@ #define LLVM_ADT_DENSESET_H #include "llvm/ADT/DenseMap.h" +#include namespace llvm { @@ -55,6 +56,11 @@ explicit DenseSetImpl(unsigned InitialReserve = 0) : TheMap(InitialReserve) {} + DenseSetImpl(std::initializer_list 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(); } Index: llvm/trunk/unittests/ADT/DenseSetTest.cpp =================================================================== --- llvm/trunk/unittests/ADT/DenseSetTest.cpp +++ llvm/trunk/unittests/ADT/DenseSetTest.cpp @@ -64,6 +64,21 @@ 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