[PATCH] D121726: [llvm][ADT]Remove duplicate code in llvm::StringMapImpl::RehashTable

Wang Yihan via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 15 11:52:39 PDT 2022


yihanaa created this revision.
yihanaa added a reviewer: MaskRay.
yihanaa added a project: LLVM.
Herald added subscribers: dexonsmith, hiraditya.
Herald added a project: All.
yihanaa requested review of this revision.
Herald added a subscriber: llvm-commits.

remove duplicate code in llvm::StringMapImpl::RehashTable, near StringMap.cpp:229

  if (!NewTableArray[NewBucket]) {
          NewTableArray[FullHash & (NewSize - 1)] = Bucket;
          NewHashArray[FullHash & (NewSize - 1)] = FullHash;
          if (I == BucketNo)
            NewBucketNo = NewBucket;
          continue;
  }


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D121726

Files:
  llvm/lib/Support/StringMap.cpp


Index: llvm/lib/Support/StringMap.cpp
===================================================================
--- llvm/lib/Support/StringMap.cpp
+++ llvm/lib/Support/StringMap.cpp
@@ -226,23 +226,16 @@
   for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
     StringMapEntryBase *Bucket = TheTable[I];
     if (Bucket && Bucket != getTombstoneVal()) {
-      // Fast case, bucket available.
+      // Fast case, bucket available, otherwise probe for a spot.
       unsigned FullHash = HashTable[I];
       unsigned NewBucket = FullHash & (NewSize - 1);
-      if (!NewTableArray[NewBucket]) {
-        NewTableArray[FullHash & (NewSize - 1)] = Bucket;
-        NewHashArray[FullHash & (NewSize - 1)] = FullHash;
-        if (I == BucketNo)
-          NewBucketNo = NewBucket;
-        continue;
+      if (NewTableArray[NewBucket]) {
+        unsigned ProbeSize = 1;
+        do {
+          NewBucket = (NewBucket + ProbeSize++) & (NewSize - 1);
+        } while (NewTableArray[NewBucket]);
       }
-
-      // Otherwise probe for a spot.
-      unsigned ProbeSize = 1;
-      do {
-        NewBucket = (NewBucket + ProbeSize++) & (NewSize - 1);
-      } while (NewTableArray[NewBucket]);
-
+      
       // Finally found a slot.  Fill it in.
       NewTableArray[NewBucket] = Bucket;
       NewHashArray[NewBucket] = FullHash;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D121726.415526.patch
Type: text/x-patch
Size: 1329 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220315/88377bba/attachment.bin>


More information about the llvm-commits mailing list