mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
Reland "[AsmPrinter] fix -disable-debug-info option"
This reverts commit 105ed27ed80dd47a9d32e72bbdd2a776a3318f38, and removes the offending line from the tests.
This commit is contained in:
parent
3773c0093a
commit
09733a0efd
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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.
|
||||
|
50
test/CodeGen/Generic/disable-debug-info-print.ll
Normal file
50
test/CodeGen/Generic/disable-debug-info-print.ll
Normal file
@ -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)
|
Loading…
Reference in New Issue
Block a user