Skip to content

Commit 5dff1ad

Browse files
[ADT] Use a range-based for loop in DenseMap.h (NFC) (#152438)
This patch teaches moveFromOldBuckets to take an iterator_range so that it can use a range-based for loop.
1 parent 69d0bd5 commit 5dff1ad

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

llvm/include/llvm/ADT/DenseMap.h

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -454,28 +454,28 @@ class DenseMapBase : public DebugEpochBase {
454454
return NextPowerOf2(NumEntries * 4 / 3 + 1);
455455
}
456456

457-
void moveFromOldBuckets(BucketT *OldBucketsBegin, BucketT *OldBucketsEnd) {
457+
void moveFromOldBuckets(iterator_range<BucketT *> OldBuckets) {
458458
initEmpty();
459459

460460
// Insert all the old elements.
461461
const KeyT EmptyKey = getEmptyKey();
462462
const KeyT TombstoneKey = getTombstoneKey();
463-
for (BucketT *B = OldBucketsBegin, *E = OldBucketsEnd; B != E; ++B) {
464-
if (!KeyInfoT::isEqual(B->getFirst(), EmptyKey) &&
465-
!KeyInfoT::isEqual(B->getFirst(), TombstoneKey)) {
463+
for (BucketT &B : OldBuckets) {
464+
if (!KeyInfoT::isEqual(B.getFirst(), EmptyKey) &&
465+
!KeyInfoT::isEqual(B.getFirst(), TombstoneKey)) {
466466
// Insert the key/value into the new table.
467467
BucketT *DestBucket;
468-
bool FoundVal = LookupBucketFor(B->getFirst(), DestBucket);
468+
bool FoundVal = LookupBucketFor(B.getFirst(), DestBucket);
469469
(void)FoundVal; // silence warning.
470470
assert(!FoundVal && "Key already in new map?");
471-
DestBucket->getFirst() = std::move(B->getFirst());
472-
::new (&DestBucket->getSecond()) ValueT(std::move(B->getSecond()));
471+
DestBucket->getFirst() = std::move(B.getFirst());
472+
::new (&DestBucket->getSecond()) ValueT(std::move(B.getSecond()));
473473
incrementNumEntries();
474474

475475
// Free the value.
476-
B->getSecond().~ValueT();
476+
B.getSecond().~ValueT();
477477
}
478-
B->getFirst().~KeyT();
478+
B.getFirst().~KeyT();
479479
}
480480
}
481481

@@ -867,7 +867,8 @@ class DenseMap : public DenseMapBase<DenseMap<KeyT, ValueT, KeyInfoT, BucketT>,
867867
return;
868868
}
869869

870-
this->moveFromOldBuckets(OldBuckets, OldBuckets + OldNumBuckets);
870+
this->moveFromOldBuckets(
871+
llvm::make_range(OldBuckets, OldBuckets + OldNumBuckets));
871872

872873
// Free the old table.
873874
deallocate_buffer(OldBuckets, sizeof(BucketT) * OldNumBuckets,
@@ -952,6 +953,9 @@ class SmallDenseMap
952953
struct LargeRep {
953954
BucketT *Buckets;
954955
unsigned NumBuckets;
956+
iterator_range<BucketT *> buckets() {
957+
return llvm::make_range(Buckets, Buckets + NumBuckets);
958+
}
955959
};
956960

957961
/// A "union" of an inline bucket array and the struct representing
@@ -1129,7 +1133,7 @@ class SmallDenseMap
11291133
Small = false;
11301134
new (getLargeRep()) LargeRep(allocateBuckets(AtLeast));
11311135
}
1132-
this->moveFromOldBuckets(TmpBegin, TmpEnd);
1136+
this->moveFromOldBuckets(llvm::make_range(TmpBegin, TmpEnd));
11331137
return;
11341138
}
11351139

@@ -1141,8 +1145,7 @@ class SmallDenseMap
11411145
new (getLargeRep()) LargeRep(allocateBuckets(AtLeast));
11421146
}
11431147

1144-
this->moveFromOldBuckets(OldRep.Buckets,
1145-
OldRep.Buckets + OldRep.NumBuckets);
1148+
this->moveFromOldBuckets(OldRep.buckets());
11461149

11471150
// Free the old table.
11481151
deallocate_buffer(OldRep.Buckets, sizeof(BucketT) * OldRep.NumBuckets,

0 commit comments

Comments
 (0)