Remove the intermediate AccelNamespace maps in DWARF units.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207059 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Blaikie
2014-04-24 01:02:42 +00:00
parent 96363d5001
commit e33575f577
4 changed files with 17 additions and 29 deletions

View File

@ -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);
}