From f2d89ff5c82c78f6160a9a8611c525771fdd2033 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174785 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 5 ++++- test/DebugInfo/X86/stmt-list.ll | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 5d19a8d765e..6d3759d19a7 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/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/test/DebugInfo/X86/stmt-list.ll b/test/DebugInfo/X86/stmt-list.ll index 8213c1b2af1..145649bf459 100644 --- a/test/DebugInfo/X86/stmt-list.ll +++ b/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.34.1