[llvm] 4206558 - [ADT] Add roundUpNumBuckets to DenseMap (NFC) (#168301)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 16 20:34:38 PST 2025
Author: Kazu Hirata
Date: 2025-11-16T20:34:33-08:00
New Revision: 4206558f715b7a67daa9c39528d04106f88612b4
URL: https://github.com/llvm/llvm-project/commit/4206558f715b7a67daa9c39528d04106f88612b4
DIFF: https://github.com/llvm/llvm-project/commit/4206558f715b7a67daa9c39528d04106f88612b4.diff
LOG: [ADT] Add roundUpNumBuckets to DenseMap (NFC) (#168301)
This patch adds computeNumBuckets, a helper function to compute the
number of buckets.
This is part of the effort outlined in #168255. This makes it easier
to move the core logic of grow() to DenseMapBase::grow().
Added:
Modified:
llvm/include/llvm/ADT/DenseMap.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/ADT/DenseMap.h b/llvm/include/llvm/ADT/DenseMap.h
index 86592f12ce62c..60448927248d7 100644
--- a/llvm/include/llvm/ADT/DenseMap.h
+++ b/llvm/include/llvm/ADT/DenseMap.h
@@ -556,7 +556,10 @@ class DenseMapBase : public DebugEpochBase {
return llvm::make_range(getBuckets(), getBucketsEnd());
}
- void grow(unsigned AtLeast) { derived().grow(AtLeast); }
+ void grow(unsigned MinNumBuckets) {
+ unsigned NumBuckets = DerivedT::roundUpNumBuckets(MinNumBuckets);
+ derived().grow(NumBuckets);
+ }
template <typename LookupKeyT>
BucketT *findBucketForInsertion(const LookupKeyT &Lookup,
@@ -840,8 +843,12 @@ class DenseMap : public DenseMapBase<DenseMap<KeyT, ValueT, KeyInfoT, BucketT>,
NumBuckets = 0;
}
+ static unsigned roundUpNumBuckets(unsigned MinNumBuckets) {
+ return std::max(64u,
+ static_cast<unsigned>(NextPowerOf2(MinNumBuckets - 1)));
+ }
+
void grow(unsigned AtLeast) {
- AtLeast = std::max<unsigned>(64, NextPowerOf2(AtLeast - 1));
DenseMap Tmp(AtLeast, typename BaseT::ExactBucketCount{});
Tmp.moveFrom(*this);
swapImpl(Tmp);
@@ -1106,11 +1113,15 @@ class SmallDenseMap
new (getLargeRep()) LargeRep{nullptr, 0};
}
- void grow(unsigned AtLeast) {
- if (AtLeast > InlineBuckets)
- AtLeast = std::max<unsigned>(64, NextPowerOf2(AtLeast - 1));
+ static unsigned roundUpNumBuckets(unsigned MinNumBuckets) {
+ if (MinNumBuckets <= InlineBuckets)
+ return MinNumBuckets;
+ return std::max(64u,
+ static_cast<unsigned>(NextPowerOf2(MinNumBuckets - 1)));
+ }
- SmallDenseMap Tmp(AtLeast, typename BaseT::ExactBucketCount{});
+ void grow(unsigned NumBuckets) {
+ SmallDenseMap Tmp(NumBuckets, typename BaseT::ExactBucketCount{});
Tmp.moveFrom(*this);
if (Tmp.Small) {
More information about the llvm-commits
mailing list