diff options
author | David Blaikie <dblaikie@gmail.com> | 2013-12-06 19:38:49 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2013-12-06 19:38:49 +0000 |
commit | 4f623205a9bcf6999ed8bf1594ab5fe97e38cdb5 (patch) | |
tree | 11d084cbe314518972d59a01b38865f0d90a10d1 | |
parent | 2666e24ca57a1a68f28127b84fe9d6eca46ca9f1 (diff) | |
download | bcm5719-llvm-4f623205a9bcf6999ed8bf1594ab5fe97e38cdb5.tar.gz bcm5719-llvm-4f623205a9bcf6999ed8bf1594ab5fe97e38cdb5.zip |
DwarfDebug: Walk skeletons during fission pubtypes/pubnames emission
This more accurately represents the actual walk - pubnames/pubtypes are
emitted into the .o, not the .dwo, and reference the skeletons not the
full units.
Use the newly established ID->index invariant to lookup the underlying
full unit to retrieve its public names and types.
llvm-svn: 196601
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 7d780d1c2ed..f7723007e17 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -2411,10 +2411,10 @@ void DwarfDebug::emitDebugPubNames(bool GnuStyle) { GnuStyle ? Asm->getObjFileLowering().getDwarfGnuPubNamesSection() : Asm->getObjFileLowering().getDwarfPubNamesSection(); - for (SmallVectorImpl<Unit *>::const_iterator I = getUnits().begin(), - E = getUnits().end(); - I != E; ++I) { - Unit *TheU = *I; + DwarfFile &Holder = useSplitDwarf() ? SkeletonHolder : InfoHolder; + const SmallVectorImpl<Unit *> &Units = Holder.getUnits(); + for (unsigned i = 0; i != Units.size(); ++i) { + Unit *TheU = Units[i]; unsigned ID = TheU->getUniqueID(); // Start the dwarf pubnames section. @@ -2445,7 +2445,7 @@ void DwarfDebug::emitDebugPubNames(bool GnuStyle) { 4); // Emit the pubnames for this compilation unit. - const StringMap<const DIE *> &Globals = TheU->getGlobalNames(); + const StringMap<const DIE *> &Globals = getUnits()[ID]->getGlobalNames(); for (StringMap<const DIE *>::const_iterator GI = Globals.begin(), GE = Globals.end(); GI != GE; ++GI) { @@ -2479,10 +2479,10 @@ void DwarfDebug::emitDebugPubTypes(bool GnuStyle) { GnuStyle ? Asm->getObjFileLowering().getDwarfGnuPubTypesSection() : Asm->getObjFileLowering().getDwarfPubTypesSection(); - for (SmallVectorImpl<Unit *>::const_iterator I = getUnits().begin(), - E = getUnits().end(); - I != E; ++I) { - Unit *TheU = *I; + DwarfFile &Holder = useSplitDwarf() ? SkeletonHolder : InfoHolder; + const SmallVectorImpl<Unit *> &Units = Holder.getUnits(); + for (unsigned i = 0; i != Units.size(); ++i) { + Unit *TheU = Units[i]; unsigned ID = TheU->getUniqueID(); // Start the dwarf pubtypes section. @@ -2514,7 +2514,7 @@ void DwarfDebug::emitDebugPubTypes(bool GnuStyle) { Asm->GetTempSymbol(ISec->getLabelBeginName(), TheU->getUniqueID()), 4); // Emit the pubtypes. - const StringMap<const DIE *> &Globals = TheU->getGlobalTypes(); + const StringMap<const DIE *> &Globals = getUnits()[ID]->getGlobalTypes(); for (StringMap<const DIE *>::const_iterator GI = Globals.begin(), GE = Globals.end(); GI != GE; ++GI) { |