Improve DenseMap checks for power of 2 growth. Thanks for the tip Jakob
authorPete Cooper <peter_cooper@apple.com>
Wed, 24 Oct 2012 18:50:44 +0000 (18:50 +0000)
committerPete Cooper <peter_cooper@apple.com>
Wed, 24 Oct 2012 18:50:44 +0000 (18:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166609 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/DenseMap.h

index ce07f8e9c5243b213684931b6486886b28be42d3..ac4bdbd126c50037e9b6676537367b37bfa0b775 100644 (file)
@@ -600,8 +600,7 @@ public:
     unsigned OldNumBuckets = NumBuckets;
     BucketT *OldBuckets = Buckets;
 
-    AtLeast = isPowerOf2_32(AtLeast) ? AtLeast : NextPowerOf2(AtLeast);
-    allocateBuckets(std::max<unsigned>(64, AtLeast));
+    allocateBuckets(std::max<unsigned>(64, NextPowerOf2(AtLeast-1)));
     assert(Buckets);
     if (!OldBuckets) {
       this->BaseT::initEmpty();
@@ -827,10 +826,8 @@ public:
   }
 
   void grow(unsigned AtLeast) {
-    if (AtLeast >= InlineBuckets) {
-      AtLeast = isPowerOf2_32(AtLeast) ? AtLeast : NextPowerOf2(AtLeast);
-      AtLeast = std::max<unsigned>(64, AtLeast);
-    }
+    if (AtLeast >= InlineBuckets)
+      AtLeast = std::max<unsigned>(64, NextPowerOf2(AtLeast-1));
 
     if (Small) {
       if (AtLeast < InlineBuckets)