[llvm] [ADT] Move shrink_and_clear to DenseMapBase (NFC) (PR #165103)

Kazu Hirata via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 25 08:46:45 PDT 2025


================
@@ -1168,6 +1146,20 @@ class SmallDenseMap
     deallocate_buffer(OldRep.Buckets, sizeof(BucketT) * OldRep.NumBuckets,
                       alignof(BucketT));
   }
+
+  std::pair<bool, unsigned> planShrinkAndClear() const {
+    unsigned NewNumBuckets = 0;
+    if (this->size()) {
+      NewNumBuckets = 1u << (Log2_32_Ceil(this->size()) + 1);
+      if (NewNumBuckets > InlineBuckets)
+        NewNumBuckets = std::max(64u, NewNumBuckets);
+    }
+    bool Reuse = Small ? NewNumBuckets <= InlineBuckets
+                       : NewNumBuckets == getLargeRep()->NumBuckets;
+    if (Reuse)
+      return {false, 0};          // Reuse
----------------
kazutakahirata wrote:

Fixed.

https://github.com/llvm/llvm-project/pull/165103


More information about the llvm-commits mailing list