[PATCH] D96134: [ADT] Allow SmallPtrSet to be used with a std::insert_iterator
Aaron Ballman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 5 13:03:38 PST 2021
aaron.ballman updated this revision to Diff 321857.
aaron.ballman added a comment.
Updating based on review feedback.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96134/new/
https://reviews.llvm.org/D96134
Files:
llvm/include/llvm/ADT/SmallPtrSet.h
llvm/unittests/ADT/SmallPtrSetTest.cpp
Index: llvm/unittests/ADT/SmallPtrSetTest.cpp
===================================================================
--- llvm/unittests/ADT/SmallPtrSetTest.cpp
+++ llvm/unittests/ADT/SmallPtrSetTest.cpp
@@ -395,3 +395,16 @@
EXPECT_TRUE(Set.contains(&buf[1]));
EXPECT_TRUE(Set.contains(&buf[2]));
}
+
+TEST(SmallPtrSetTest, InsertIterator) {
+ SmallPtrSet<int *, 5> Set;
+ int Vals[5] = {11, 22, 33, 44, 55};
+ int *Buf[5] = {&Vals[0], &Vals[1], &Vals[2], &Vals[3], &Vals[4]};
+
+ for (int *Ptr : Buf)
+ Set.insert(Set.begin(), Ptr);
+
+ // Ensure that all of the values were copied into the set.
+ for (const auto *Ptr : Buf)
+ EXPECT_TRUE(Set.contains(Ptr));
+}
Index: llvm/include/llvm/ADT/SmallPtrSet.h
===================================================================
--- llvm/include/llvm/ADT/SmallPtrSet.h
+++ llvm/include/llvm/ADT/SmallPtrSet.h
@@ -366,6 +366,13 @@
return std::make_pair(makeIterator(p.first), p.second);
}
+ /// Insert the given pointer with an iterator hint that is ignored. This is
+ /// identical to calling insert(Ptr), but allows SmallPtrSet to be used by
+ /// std::insert_iterator and std::inserter().
+ iterator insert(iterator, PtrType Ptr) {
+ return insert(Ptr).first;
+ }
+
/// erase - If the set contains the specified pointer, remove it and return
/// true, otherwise return false.
bool erase(PtrType Ptr) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D96134.321857.patch
Type: text/x-patch
Size: 1392 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210205/4d62c447/attachment.bin>
More information about the llvm-commits
mailing list