From d2c95eb995e92ccbe07b10f0741408ea3553c6b1 Mon Sep 17 00:00:00 2001 From: Manman Ren Date: Sat, 9 Feb 2013 00:41:44 +0000 Subject: [PATCH] Dwarf: do not use line_table_start in at_stmt_list since we do not always emit line table entries in assembly. llvm-svn: 174785 --- llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 5 ++++- llvm/test/DebugInfo/X86/stmt-list.ll | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 5d19a8d..6d3759d 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -670,9 +670,12 @@ CompileUnit *DwarfDebug::constructCompileUnit(const MDNode *N) { // DW_AT_stmt_list is a offset of line number information for this // compile unit in debug_line section. + // The line table entries are not always emitted in assembly, so it + // is not okay to use line_table_start here. if (Asm->MAI->doesDwarfUseRelocationsAcrossSections()) NewCU->addLabel(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4, - LineTableStartSym); + NewCU->getUniqueID() == 0 ? + Asm->GetTempSymbol("section_line") : LineTableStartSym); else if (NewCU->getUniqueID() == 0) NewCU->addUInt(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4, 0); else diff --git a/llvm/test/DebugInfo/X86/stmt-list.ll b/llvm/test/DebugInfo/X86/stmt-list.ll index 8213c1b..145649b 100644 --- a/llvm/test/DebugInfo/X86/stmt-list.ll +++ b/llvm/test/DebugInfo/X86/stmt-list.ll @@ -3,7 +3,7 @@ ; CHECK: .section .debug_line,"",@progbits ; CHECK-NEXT: .Lsection_line: -; CHECK: .long .Lline_table_start0 # DW_AT_stmt_list +; CHECK: .long .Lsection_line # DW_AT_stmt_list define void @f() { entry: -- 2.7.4