diff options
| author | David Blaikie <dblaikie@gmail.com> | 2014-04-24 01:02:42 +0000 |
|---|---|---|
| committer | David Blaikie <dblaikie@gmail.com> | 2014-04-24 01:02:42 +0000 |
| commit | ecf0415245e7033fffad2fe251b839cc01d71133 (patch) | |
| tree | 6c2210fa790bef1e32b1c372df2628f44e261280 | |
| parent | dee4b2c379ab6913f03001c94d3f3753a1e09ad6 (diff) | |
| download | bcm5719-llvm-ecf0415245e7033fffad2fe251b839cc01d71133.tar.gz bcm5719-llvm-ecf0415245e7033fffad2fe251b839cc01d71133.zip | |
Remove the intermediate AccelNamespace maps in DWARF units.
llvm-svn: 207059
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 25 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h | 3 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 12 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h | 6 |
4 files changed, 17 insertions, 29 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 549e991829e..5490721bc05 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -172,7 +172,9 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M) AccelNames(DwarfAccelTable::Atom(dwarf::DW_ATOM_die_offset, dwarf::DW_FORM_data4)), AccelObjC(DwarfAccelTable::Atom(dwarf::DW_ATOM_die_offset, - dwarf::DW_FORM_data4)) { + dwarf::DW_FORM_data4)), + AccelNamespace(DwarfAccelTable::Atom(dwarf::DW_ATOM_die_offset, + dwarf::DW_FORM_data4)) { DwarfInfoSectionSym = DwarfAbbrevSectionSym = DwarfStrSectionSym = 0; DwarfDebugRangeSectionSym = DwarfDebugLocSectionSym = DwarfLineSectionSym = 0; @@ -1885,24 +1887,14 @@ void DwarfDebug::emitAccelObjC() { // Emit namespace dies into a hashed accelerator table. void DwarfDebug::emitAccelNamespaces() { - DwarfAccelTable AT( - DwarfAccelTable::Atom(dwarf::DW_ATOM_die_offset, dwarf::DW_FORM_data4)); - for (const auto &TheU : getUnits()) { - for (const auto &GI : TheU->getAccelNamespace()) { - StringRef Name = GI.getKey(); - for (const DIE *D : GI.second) - AT.AddName(Name, D); - } - } - - AT.FinalizeTable(Asm, "namespac"); + AccelNamespace.FinalizeTable(Asm, "namespac"); Asm->OutStreamer.SwitchSection( Asm->getObjFileLowering().getDwarfAccelNamespaceSection()); MCSymbol *SectionBegin = Asm->GetTempSymbol("namespac_begin"); Asm->OutStreamer.EmitLabel(SectionBegin); // Emit the full data. - AT.Emit(Asm, SectionBegin, &InfoHolder); + AccelNamespace.Emit(Asm, SectionBegin, &InfoHolder); } // Emit type dies into a hashed accelerator table. @@ -2568,3 +2560,10 @@ void DwarfDebug::addAccelObjC(StringRef Name, const DIE *Die) { InfoHolder.getStringPoolEntry(Name); AccelObjC.AddName(Name, Die); } + +void DwarfDebug::addAccelNamespace(StringRef Name, const DIE *Die) { + if (!useDwarfAccelTables()) + return; + InfoHolder.getStringPoolEntry(Name); + AccelNamespace.AddName(Name, Die); +} diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h index 901561bd321..f3367f4cebe 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -326,6 +326,7 @@ class DwarfDebug : public AsmPrinterHandler { DwarfAccelTable AccelNames; DwarfAccelTable AccelObjC; + DwarfAccelTable AccelNamespace; MCDwarfDwoLineTable *getDwoLineTable(const DwarfCompileUnit &); @@ -645,6 +646,8 @@ public: void addAccelName(StringRef Name, const DIE *Die); void addAccelObjC(StringRef Name, const DIE *Die); + + void addAccelNamespace(StringRef Name, const DIE *Die); }; } // End of namespace llvm diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index 02bce18d569..9b5923441cd 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -1065,14 +1065,6 @@ void DwarfUnit::addType(DIE *Entity, DIType Ty, dwarf::Attribute Attribute) { addDIEEntry(Entity, Attribute, Entry); } -void DwarfUnit::addAccelNamespace(StringRef Name, const DIE *Die) { - if (!DD->useDwarfAccelTables()) - return; - DU->getStringPoolEntry(Name); - std::vector<const DIE *> &DIEs = AccelNamespace[Name]; - DIEs.push_back(Die); -} - void DwarfUnit::addAccelType(StringRef Name, std::pair<const DIE *, unsigned> Die) { if (!DD->useDwarfAccelTables()) @@ -1415,10 +1407,10 @@ DIE *DwarfUnit::getOrCreateNameSpace(DINameSpace NS) { if (!NS.getName().empty()) { addString(NDie, dwarf::DW_AT_name, NS.getName()); - addAccelNamespace(NS.getName(), NDie); + DD->addAccelNamespace(NS.getName(), NDie); addGlobalName(NS.getName(), NDie, NS.getContext()); } else - addAccelNamespace("(anonymous namespace)", NDie); + DD->addAccelNamespace("(anonymous namespace)", NDie); addSourceLine(NDie, NS); return NDie; } diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h index 4fd1e91b2df..13fb1b5c9e2 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -102,9 +102,6 @@ protected: /// GlobalTypes - A map of globally visible types for this unit. StringMap<const DIE *> GlobalTypes; - /// AccelNamespace - A map of names for the namespace accelerator table. - StringMap<std::vector<const DIE *> > AccelNamespace; - /// AccelTypes - A map of names for the type accelerator table. StringMap<std::vector<std::pair<const DIE *, unsigned> > > AccelTypes; @@ -225,9 +222,6 @@ public: const StringMap<const DIE *> &getGlobalNames() const { return GlobalNames; } const StringMap<const DIE *> &getGlobalTypes() const { return GlobalTypes; } - const StringMap<std::vector<const DIE *> > &getAccelNamespace() const { - return AccelNamespace; - } const StringMap<std::vector<std::pair<const DIE *, unsigned> > > & getAccelTypes() const { return AccelTypes; |

