diff options
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 89 |
1 files changed, 20 insertions, 69 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 76a360d2ca2..7353875ad39 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -107,14 +107,13 @@ static cl::opt<DefaultOnOff> UnknownLocations( clEnumVal(Enable, "In all cases"), clEnumVal(Disable, "Never")), cl::init(Default)); -static cl::opt<AccelTableKind> AccelTables( - "accel-tables", cl::Hidden, cl::desc("Output dwarf accelerator tables."), - cl::values(clEnumValN(AccelTableKind::Default, "Default", - "Default for platform"), - clEnumValN(AccelTableKind::None, "Disable", "Disabled."), - clEnumValN(AccelTableKind::Apple, "Apple", "Apple"), - clEnumValN(AccelTableKind::Dwarf, "Dwarf", "DWARF")), - cl::init(AccelTableKind::Default)); +static cl::opt<DefaultOnOff> +DwarfAccelTables("dwarf-accel-tables", cl::Hidden, + cl::desc("Output prototype dwarf accelerator tables."), + cl::values(clEnumVal(Default, "Default for platform"), + clEnumVal(Enable, "Enabled"), + clEnumVal(Disable, "Disabled")), + cl::init(Default)); static cl::opt<DefaultOnOff> DwarfInlinedStrings("dwarf-inlined-strings", cl::Hidden, @@ -304,13 +303,11 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M) // Turn on accelerator tables by default, if tuning for LLDB and the target is // supported. - if (AccelTables == AccelTableKind::Default) { - if (tuneForLLDB() && A->TM.getTargetTriple().isOSBinFormatMachO()) - AccelTableKind = AccelTableKind::Apple; - else - AccelTableKind = AccelTableKind::None; - } else - AccelTableKind = AccelTables; + if (DwarfAccelTables == Default) + HasDwarfAccelTables = + tuneForLLDB() && A->TM.getTargetTriple().isOSBinFormatMachO(); + else + HasDwarfAccelTables = DwarfAccelTables == Enable; UseInlineStrings = DwarfInlinedStrings == Enable; HasAppleExtensionAttributes = tuneForLLDB(); @@ -842,20 +839,11 @@ void DwarfDebug::endModule() { } // Emit info into the dwarf accelerator table sections. - switch (getAccelTableKind()) { - case AccelTableKind::Apple: + if (useDwarfAccelTables()) { emitAccelNames(); emitAccelObjC(); emitAccelNamespaces(); emitAccelTypes(); - break; - case AccelTableKind::Dwarf: - emitAccelDebugNames(); - break; - case AccelTableKind::None: - break; - case AccelTableKind::Default: - llvm_unreachable("Default should have already been resolved."); } // Emit the pubnames and pubtypes sections if requested. @@ -1467,12 +1455,6 @@ void DwarfDebug::emitAccel(AccelTableT &Accel, MCSection *Section, emitAppleAccelTable(Asm, Accel, TableName, Section->getBeginSymbol()); } -void DwarfDebug::emitAccelDebugNames() { - Asm->OutStreamer->SwitchSection( - Asm->getObjFileLowering().getDwarfDebugNamesSection()); - emitDWARF5AccelTable(Asm, AccelDebugNames, *this, getUnits()); -} - // Emit visible names into a hashed accelerator table section. void DwarfDebug::emitAccelNames() { emitAccel(AccelNames, Asm->getObjFileLowering().getDwarfAccelNamesSection(), @@ -2268,58 +2250,27 @@ void DwarfDebug::addDwarfTypeUnitType(DwarfCompileUnit &CU, // to reference is in the string table. We do this since the names we // add may not only be identical to the names in the DIE. void DwarfDebug::addAccelName(StringRef Name, const DIE &Die) { - switch (getAccelTableKind()) { - case AccelTableKind::Apple: - AccelNames.addName(InfoHolder.getStringPool().getEntry(*Asm, Name), &Die); - break; - case AccelTableKind::Dwarf: - AccelDebugNames.addName(InfoHolder.getStringPool().getEntry(*Asm, Name), - Die); - break; - case AccelTableKind::None: + if (!useDwarfAccelTables()) return; - case AccelTableKind::Default: - llvm_unreachable("Default should have already been resolved."); - } + AccelNames.addName(InfoHolder.getStringPool().getEntry(*Asm, Name), &Die); } void DwarfDebug::addAccelObjC(StringRef Name, const DIE &Die) { - if (getAccelTableKind() != AccelTableKind::Apple) + if (!useDwarfAccelTables()) return; AccelObjC.addName(InfoHolder.getStringPool().getEntry(*Asm, Name), &Die); } void DwarfDebug::addAccelNamespace(StringRef Name, const DIE &Die) { - switch (getAccelTableKind()) { - case AccelTableKind::Apple: - AccelNamespace.addName(InfoHolder.getStringPool().getEntry(*Asm, Name), - &Die); - break; - case AccelTableKind::Dwarf: - AccelDebugNames.addName(InfoHolder.getStringPool().getEntry(*Asm, Name), - Die); - break; - case AccelTableKind::None: + if (!useDwarfAccelTables()) return; - case AccelTableKind::Default: - llvm_unreachable("Default should have already been resolved."); - } + AccelNamespace.addName(InfoHolder.getStringPool().getEntry(*Asm, Name), &Die); } void DwarfDebug::addAccelType(StringRef Name, const DIE &Die, char Flags) { - switch (getAccelTableKind()) { - case AccelTableKind::Apple: - AccelTypes.addName(InfoHolder.getStringPool().getEntry(*Asm, Name), &Die); - break; - case AccelTableKind::Dwarf: - AccelDebugNames.addName(InfoHolder.getStringPool().getEntry(*Asm, Name), - Die); - break; - case AccelTableKind::None: + if (!useDwarfAccelTables()) return; - case AccelTableKind::Default: - llvm_unreachable("Default should have already been resolved."); - } + AccelTypes.addName(InfoHolder.getStringPool().getEntry(*Asm, Name), &Die); } uint16_t DwarfDebug::getDwarfVersion() const { |

