diff options
author | Kazu Hirata <kazu@google.com> | 2025-08-09 23:05:41 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-09 23:05:41 -0700 |
commit | c123f4782f0ec87c947aa97a2f0b3a4c2d02e68c (patch) | |
tree | b2998f6e0aafdcfd1af358e6ab8706e06d6f1899 | |
parent | b2cdd80411dab7b08a7649a5043370d816dbd3f4 (diff) | |
download | llvm-c123f4782f0ec87c947aa97a2f0b3a4c2d02e68c.zip llvm-c123f4782f0ec87c947aa97a2f0b3a4c2d02e68c.tar.gz llvm-c123f4782f0ec87c947aa97a2f0b3a4c2d02e68c.tar.bz2 |
[ADT] Use range-based for loops in SmallPtrSet (NFC) (#152882)
This patch introduces helper function buckets() to convert two loops
to range-based for loops.
-rw-r--r-- | llvm/include/llvm/ADT/SmallPtrSet.h | 13 | ||||
-rw-r--r-- | llvm/lib/Support/SmallPtrSet.cpp | 12 |
2 files changed, 13 insertions, 12 deletions
diff --git a/llvm/include/llvm/ADT/SmallPtrSet.h b/llvm/include/llvm/ADT/SmallPtrSet.h index 88aedf2..f0f28ac3 100644 --- a/llvm/include/llvm/ADT/SmallPtrSet.h +++ b/llvm/include/llvm/ADT/SmallPtrSet.h @@ -156,6 +156,10 @@ protected: return {CurArray, CurArray + NumNonEmpty}; } + iterator_range<const void **> buckets() { + return make_range(CurArray, EndPointer()); + } + /// insert_imp - This returns true if the pointer was new to the set, false if /// it was already in the set. This is hidden from the client so that the /// derived class can check that the right type of pointer is passed in. @@ -441,13 +445,12 @@ public: return Removed; } - for (const void **APtr = CurArray, **E = EndPointer(); APtr != E; ++APtr) { - const void *Value = *APtr; - if (Value == getTombstoneMarker() || Value == getEmptyMarker()) + for (const void *&Bucket : buckets()) { + if (Bucket == getTombstoneMarker() || Bucket == getEmptyMarker()) continue; - PtrType Ptr = PtrTraits::getFromVoidPointer(const_cast<void *>(Value)); + PtrType Ptr = PtrTraits::getFromVoidPointer(const_cast<void *>(Bucket)); if (P(Ptr)) { - *APtr = getTombstoneMarker(); + Bucket = getTombstoneMarker(); ++NumTombstones; incrementEpoch(); Removed = true; diff --git a/llvm/lib/Support/SmallPtrSet.cpp b/llvm/lib/Support/SmallPtrSet.cpp index 83143a7..0c22697 100644 --- a/llvm/lib/Support/SmallPtrSet.cpp +++ b/llvm/lib/Support/SmallPtrSet.cpp @@ -110,8 +110,7 @@ const void *const *SmallPtrSetImplBase::FindBucketFor(const void *Ptr) const { /// Grow - Allocate a larger backing store for the buckets and move it over. /// void SmallPtrSetImplBase::Grow(unsigned NewSize) { - const void **OldBuckets = CurArray; - const void **OldEnd = EndPointer(); + auto OldBuckets = buckets(); bool WasSmall = isSmall(); // Install the new array. Clear all the buckets to empty. @@ -123,15 +122,14 @@ void SmallPtrSetImplBase::Grow(unsigned NewSize) { memset(CurArray, -1, NewSize*sizeof(void*)); // Copy over all valid entries. - for (const void **BucketPtr = OldBuckets; BucketPtr != OldEnd; ++BucketPtr) { + for (const void *&Bucket : OldBuckets) { // Copy over the element if it is valid. - const void *Elt = *BucketPtr; - if (Elt != getTombstoneMarker() && Elt != getEmptyMarker()) - *const_cast<void**>(FindBucketFor(Elt)) = const_cast<void*>(Elt); + if (Bucket != getTombstoneMarker() && Bucket != getEmptyMarker()) + *const_cast<void **>(FindBucketFor(Bucket)) = const_cast<void *>(Bucket); } if (!WasSmall) - free(OldBuckets); + free(OldBuckets.begin()); NumNonEmpty -= NumTombstones; NumTombstones = 0; IsSmall = false; |