Rework adding function names to the dwarf accelerator tables, allow
[oota-llvm.git] / lib / CodeGen / AsmPrinter / DwarfAccelTable.cpp
index 7c93dbf5b9a55faa0379a8c1beba726f4753f593..a3a24887615eab7a8ccd3eb0228c7cb314490178 100644 (file)
@@ -75,9 +75,15 @@ void DwarfAccelTable::ComputeBucketCount(void) {
 
 void DwarfAccelTable::FinalizeTable(AsmPrinter *Asm, const char *Prefix) {
   // Create the individual hash data outputs.
 
 void DwarfAccelTable::FinalizeTable(AsmPrinter *Asm, const char *Prefix) {
   // Create the individual hash data outputs.
-  for (StringMap<DIEArray>::const_iterator
+  for (StringMap<DIEArray>::iterator
          EI = Entries.begin(), EE = Entries.end(); EI != EE; ++EI) {
     struct HashData *Entry = new HashData((*EI).getKeyData());
          EI = Entries.begin(), EE = Entries.end(); EI != EE; ++EI) {
     struct HashData *Entry = new HashData((*EI).getKeyData());
+
+    // Unique the entries.
+    std::sort((*EI).second.begin(), (*EI).second.end());
+    (*EI).second.erase(std::unique((*EI).second.begin(), (*EI).second.end()),
+                       (*EI).second.end());
+
     for (DIEArray::const_iterator DI = (*EI).second.begin(),
            DE = (*EI).second.end();
          DI != DE; ++DI)
     for (DIEArray::const_iterator DI = (*EI).second.begin(),
            DE = (*EI).second.end();
          DI != DE; ++DI)