[llvm] bf6ed35 - Reland "[AsmPrinter] fix -disable-debug-info option"
Jameson Nash via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 16 10:35:39 PST 2020
Author: Jameson Nash
Date: 2020-11-16T13:34:47-05:00
New Revision: bf6ed355c8d10319bd7e3ce62d5f369db9fa0b97
URL: https://github.com/llvm/llvm-project/commit/bf6ed355c8d10319bd7e3ce62d5f369db9fa0b97
DIFF: https://github.com/llvm/llvm-project/commit/bf6ed355c8d10319bd7e3ce62d5f369db9fa0b97.diff
LOG: Reland "[AsmPrinter] fix -disable-debug-info option"
This reverts commit 105ed27ed80dd47a9d32e72bbdd2a776a3318f38, and
removes the offending line from the tests.
Added:
llvm/test/CodeGen/Generic/disable-debug-info-print.ll
Modified:
llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index fddb4f438492..b9f98911678b 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -131,6 +131,11 @@ using namespace llvm;
#define DEBUG_TYPE "asm-printer"
+// FIXME: this option currently only applies to DWARF, and not CodeView, tables
+static cl::opt<bool>
+ DisableDebugInfoPrinting("disable-debug-info-print", cl::Hidden,
+ cl::desc("Disable debug info printing"));
+
static const char *const DWARFGroupName = "dwarf";
static const char *const DWARFGroupDescription = "DWARF Emission";
static const char *const DbgTimerName = "emit";
@@ -232,9 +237,11 @@ void AsmPrinter::EmitToStreamer(MCStreamer &S, const MCInst &Inst) {
}
void AsmPrinter::emitInitialRawDwarfLocDirective(const MachineFunction &MF) {
- assert(DD && "Dwarf debug file is not defined.");
- assert(OutStreamer->hasRawTextSupport() && "Expected assembly output mode.");
- (void)DD->emitInitialLocDirective(MF, /*CUID=*/0);
+ if (DD) {
+ assert(OutStreamer->hasRawTextSupport() &&
+ "Expected assembly output mode.");
+ (void)DD->emitInitialLocDirective(MF, /*CUID=*/0);
+ }
}
/// getCurrentSection() - Return the current section we are emitting to.
@@ -262,6 +269,9 @@ bool AsmPrinter::doInitialization(Module &M) {
OutStreamer->InitSections(false);
+ if (DisableDebugInfoPrinting)
+ MMI->setDebugInfoAvailability(false);
+
// Emit the version-min deployment target directive if needed.
//
// FIXME: If we end up with a collection of these sorts of Darwin-specific
@@ -314,10 +324,12 @@ bool AsmPrinter::doInitialization(Module &M) {
CodeViewLineTablesGroupDescription);
}
if (!EmitCodeView || M.getDwarfVersion()) {
- DD = new DwarfDebug(this);
- Handlers.emplace_back(std::unique_ptr<DwarfDebug>(DD), DbgTimerName,
- DbgTimerDescription, DWARFGroupName,
- DWARFGroupDescription);
+ if (!DisableDebugInfoPrinting) {
+ DD = new DwarfDebug(this);
+ Handlers.emplace_back(std::unique_ptr<DwarfDebug>(DD), DbgTimerName,
+ DbgTimerDescription, DWARFGroupName,
+ DWARFGroupDescription);
+ }
}
}
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 8b5f982f81f5..5054ed81fcfc 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -67,10 +67,6 @@ using namespace llvm;
STATISTIC(NumCSParams, "Number of dbg call site params created");
-static cl::opt<bool>
-DisableDebugInfoPrinting("disable-debug-info-print", cl::Hidden,
- cl::desc("Disable debug info printing"));
-
static cl::opt<bool> UseDwarfRangesBaseAddressSpecifier(
"use-dwarf-ranges-base-address-specifier", cl::Hidden,
cl::desc("Use base address specifiers in debug_ranges"), cl::init(false));
@@ -1122,7 +1118,7 @@ sortGlobalExprs(SmallVectorImpl<DwarfCompileUnit::GlobalExpr> &GVEs) {
void DwarfDebug::beginModule(Module *M) {
DebugHandlerBase::beginModule(M);
- if (!Asm || !MMI->hasDebugInfo() || DisableDebugInfoPrinting)
+ if (!Asm || !MMI->hasDebugInfo())
return;
unsigned NumDebugCUs = std::distance(M->debug_compile_units_begin(),
@@ -1390,9 +1386,8 @@ void DwarfDebug::endModule() {
}
// If we aren't actually generating debug info (check beginModule -
- // conditionalized on !DisableDebugInfoPrinting and the presence of the
- // llvm.dbg.cu metadata node)
- if (!Asm || !MMI->hasDebugInfo() || DisableDebugInfoPrinting)
+ // conditionalized on the presence of the llvm.dbg.cu metadata node)
+ if (!Asm || !MMI->hasDebugInfo())
return;
// Finalize the debug info for the module.
diff --git a/llvm/test/CodeGen/Generic/disable-debug-info-print.ll b/llvm/test/CodeGen/Generic/disable-debug-info-print.ll
new file mode 100644
index 000000000000..befa91c15d3c
--- /dev/null
+++ b/llvm/test/CodeGen/Generic/disable-debug-info-print.ll
@@ -0,0 +1,50 @@
+; RUN: llc -disable-debug-info-print=true -exception-model=dwarf -o - %s | FileCheck %s
+; RUN: llc -disable-debug-info-print=true -exception-model=sjlj -o - %s | FileCheck %s --check-prefix=SJLJ-CHECK
+
+define i16 @main() nounwind !dbg !7 {
+entry:
+ ret i16 0, !dbg !9
+}
+
+define i16 @helper() !dbg !10 {
+entry:
+ ret i16 0, !dbg !11
+}
+
+
+; CHECK: main
+; CHECK-NOT: cfi_startproc
+; CHECK-NOT: .file
+; CHECK-NOT: .loc
+; CHECK: helper
+; CHECK: cfi_startproc
+; CHECK-NOT: .file
+; CHECK-NOT: .loc
+; CHECK: cfi_endproc
+
+; SJLJ-CHECK: main
+; SJLJ-CHECK-NOT: cfi_startproc
+; SJLJ-CHECK-NOT: .file
+; SJLJ-CHECK-NOT: .loc
+; SJLJ-CHECK: helper
+; SJLJ-CHECK-NOT: cfi_startproc
+; SJLJ-CHECK-NOT: .file
+; SJLJ-CHECK-NOT: .loc
+
+
+!llvm.dbg.cu = !{!0}
+!llvm.module.flags = !{!3, !4, !5}
+!llvm.ident = !{!6}
+
+!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 12.0.0", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2, splitDebugInlining: false, nameTableKind: None)
+!1 = !DIFile(filename: "unwind-tables.c", directory: "/tmp")
+!2 = !{}
+!3 = !{i32 7, !"Dwarf Version", i32 4}
+!4 = !{i32 2, !"Debug Info Version", i32 3}
+!5 = !{i32 1, !"wchar_size", i32 4}
+!6 = !{!"clang version 12.0.0"}
+!7 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 1, type: !8, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2)
+!8 = !DISubroutineType(types: !2)
+!9 = !DILocation(line: 2, column: 3, scope: !7)
+!10 = distinct !DISubprogram(name: "helper", scope: !1, file: !1, line: 1, type: !8, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2)
+!11 = !DILocation(line: 2, column: 3, scope: !10)
More information about the llvm-commits
mailing list