[llvm] r200422 - Turn on CU ranges if we've got multiple compile units in the same

Eric Christopher echristo at gmail.com
Wed Jan 29 14:06:27 PST 2014


Author: echristo
Date: Wed Jan 29 16:06:27 2014
New Revision: 200422

URL: http://llvm.org/viewvc/llvm-project?rev=200422&view=rev
Log:
Turn on CU ranges if we've got multiple compile units in the same
module since there's no range guarantee that we could make given
output order. This also fixes up the testcases that have multiple
CUs to have the correct range offset.

Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=200422&r1=200421&r2=200422&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Wed Jan 29 16:06:27 2014
@@ -1119,10 +1119,12 @@ void DwarfDebug::endSections() {
   }
 
   // For now only turn on CU ranges if we've explicitly asked for it,
-  // we have -ffunction-sections enabled, or we've emitted a function
-  // into a unique section. At this point all sections should be finalized
-  // except for dwarf sections.
-  HasCURanges = DwarfCURanges || UsedNonDefaultText ||
+  // we have -ffunction-sections enabled, we've emitted a function
+  // into a unique section, or we're using LTO. If we're using LTO then
+  // we can't know that any particular function in the module is correlated
+  // to a particular CU and so we need to be conservative. At this point all
+  // sections should be finalized except for dwarf sections.
+  HasCURanges = DwarfCURanges || UsedNonDefaultText || (CUMap.size() > 1) ||
                 TargetMachine::getFunctionSections();
 }
 

Modified: llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll?rev=200422&r1=200421&r2=200422&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll Wed Jan 29 16:06:27 2014
@@ -8,11 +8,11 @@
 ; CHECK: .debug_info contents:
 ; CHECK: DW_TAG_compile_unit
 ; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset]   (0x00000000)
-; CHECK: DW_AT_low_pc [DW_FORM_addr]       (0x0000000000000000)
+; CHECK: DW_AT_ranges [DW_FORM_sec_offset]      (0x00000000)
 
 ; CHECK: DW_TAG_compile_unit
 ; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset]   (0x0000003c)
-; CHECK: DW_AT_low_pc [DW_FORM_addr]       (0x0000000000000000)
+; CHECK: DW_AT_ranges [DW_FORM_sec_offset]      (0x00000020)
 
 ; CHECK: .debug_line contents:
 ; CHECK-NEXT: Line table prologue:
@@ -25,12 +25,12 @@
 
 ; DWARF3: .debug_info contents:
 ; DWARF3: DW_TAG_compile_unit
-; DWARF3: DW_AT_stmt_list [DW_FORM_data4]   (0x00000000)
-; DWARF3: DW_AT_low_pc [DW_FORM_addr]       (0x0000000000000000)
+; DWARF3: DW_AT_stmt_list [DW_FORM_data4]    (0x00000000)
+; DWARF3: DW_AT_ranges [DW_FORM_data4]       (0x00000000)
 
 ; DWARF3: DW_TAG_compile_unit
 ; DWARF3: DW_AT_stmt_list [DW_FORM_data4]   (0x0000003c)
-; DWARF3: DW_AT_low_pc [DW_FORM_addr]       (0x0000000000000000)
+; DWARF3: DW_AT_ranges [DW_FORM_data4]      (0x00000020)
 
 ; DWARF3: .debug_line contents:
 ; DWARF3-NEXT: Line table prologue:





More information about the llvm-commits mailing list