[llvm][ADT] Remove duplicate code in llvm::StringMapImpl::RehashTable
authorwangyihan <1135831309@qq.com>
Wed, 16 Mar 2022 08:01:35 +0000 (01:01 -0700)
committerFangrui Song <i@maskray.me>
Wed, 16 Mar 2022 08:01:35 +0000 (01:01 -0700)
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;
}
```

Reviewed By: MaskRay, dexonsmith

Differential Revision: https://reviews.llvm.org/D121726

llvm/lib/Support/StringMap.cpp

index 012c785..531376a 100644 (file)
@@ -226,23 +226,16 @@ unsigned StringMapImpl::RehashTable(unsigned BucketNo) {
   for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
     StringMapEntryBase *Bucket = TheTable[I];
     if (Bucket && Bucket != getTombstoneVal()) {
-      // Fast case, bucket available.
+      // If the bucket is not available, 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;