[llvm] [ADT] Use a range-based for loop in DenseMap.h (NFC) (PR #152084)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 4 22:57:05 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-adt
Author: Kazu Hirata (kazutakahirata)
<details>
<summary>Changes</summary>
This patch introduces inlineBuckets to convert a loop into a
range-based for loop.
---
Full diff: https://github.com/llvm/llvm-project/pull/152084.diff
1 Files Affected:
- (modified) llvm/include/llvm/ADT/DenseMap.h (+12-7)
``````````diff
diff --git a/llvm/include/llvm/ADT/DenseMap.h b/llvm/include/llvm/ADT/DenseMap.h
index 9557c9d8e34a1..ea5eac4cc63f0 100644
--- a/llvm/include/llvm/ADT/DenseMap.h
+++ b/llvm/include/llvm/ADT/DenseMap.h
@@ -1109,17 +1109,17 @@ class SmallDenseMap
// temporary storage. Have the loop move the TmpEnd forward as it goes.
const KeyT EmptyKey = this->getEmptyKey();
const KeyT TombstoneKey = this->getTombstoneKey();
- for (BucketT *P = getBuckets(), *E = P + InlineBuckets; P != E; ++P) {
- if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
- !KeyInfoT::isEqual(P->getFirst(), TombstoneKey)) {
+ for (BucketT &B : inlineBuckets()) {
+ if (!KeyInfoT::isEqual(B.getFirst(), EmptyKey) &&
+ !KeyInfoT::isEqual(B.getFirst(), TombstoneKey)) {
assert(size_t(TmpEnd - TmpBegin) < InlineBuckets &&
"Too many inline buckets!");
- ::new (&TmpEnd->getFirst()) KeyT(std::move(P->getFirst()));
- ::new (&TmpEnd->getSecond()) ValueT(std::move(P->getSecond()));
+ ::new (&TmpEnd->getFirst()) KeyT(std::move(B.getFirst()));
+ ::new (&TmpEnd->getSecond()) ValueT(std::move(B.getSecond()));
++TmpEnd;
- P->getSecond().~ValueT();
+ B.getSecond().~ValueT();
}
- P->getFirst().~KeyT();
+ B.getFirst().~KeyT();
}
// AtLeast == InlineBuckets can happen if there are many tombstones,
@@ -1220,6 +1220,11 @@ class SmallDenseMap
return Small ? InlineBuckets : getLargeRep()->NumBuckets;
}
+ iterator_range<BucketT *> inlineBuckets() {
+ BucketT *Begin = getInlineBuckets();
+ return llvm::make_range(Begin, Begin + InlineBuckets);
+ }
+
void deallocateBuckets() {
if (Small)
return;
``````````
</details>
https://github.com/llvm/llvm-project/pull/152084
More information about the llvm-commits
mailing list