diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 66be6058fd2e..d557f4034802 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -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(); } diff --git a/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll b/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll index e63cbd11e48f..5cb8f613a340 100644 --- a/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll +++ b/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll @@ -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: