summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp89
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 {
OpenPOWER on IntegriCloud