DwarfAccelTable: remove unneeded bucket terminators.
authorFrederic Riss <friss@apple.com>
Tue, 10 Mar 2015 03:47:55 +0000 (03:47 +0000)
committerFrederic Riss <friss@apple.com>
Tue, 10 Mar 2015 03:47:55 +0000 (03:47 +0000)
Last commit fixed the handling of hash collisions, but it introdcuced
unneeded bucket terminators in some places. The generated table was
correct, it can just be a tiny bit smaller. As the previous table was
correct, the test doesn't need updating. If we really wanted to test
this, I could add the section size to the dwarf dump and test for a
precise value there. IMO the correctness test is sufficient.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231748 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/DwarfAccelTable.cpp

index 09c47356adc6815fa5a917c733e6f57f01e4f0a4..c19325952b1961312d4e706ac6926cec599a1486 100644 (file)
@@ -205,8 +205,8 @@ void DwarfAccelTable::EmitOffsets(AsmPrinter *Asm, MCSymbol *SecBegin) {
 // Terminate each HashData bucket with 0.
 void DwarfAccelTable::EmitData(AsmPrinter *Asm, DwarfDebug *D,
                                MCSymbol *StrSym) {
-  uint64_t PrevHash = UINT64_MAX;
   for (size_t i = 0, e = Buckets.size(); i < e; ++i) {
+    uint64_t PrevHash = UINT64_MAX;
     for (HashList::const_iterator HI = Buckets[i].begin(),
                                   HE = Buckets[i].end();
          HI != HE; ++HI) {
@@ -235,7 +235,8 @@ void DwarfAccelTable::EmitData(AsmPrinter *Asm, DwarfDebug *D,
       PrevHash = (*HI)->HashValue;
     }
     // Emit the final end marker for the bucket.
-    Asm->EmitInt32(0);
+    if (!Buckets[i].empty())
+      Asm->EmitInt32(0);
   }
 }