[DWARF] Emit a split line table only if there are split type units.

A .debug_info.dwo section doesn't use the .debug_line.dwo section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@326395 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Paul Robinson 2018-03-01 00:12:35 +00:00
parent b3505fe266
commit 9161b0eb01
3 changed files with 9 additions and 0 deletions

View File

@ -2105,6 +2105,8 @@ void DwarfDebug::emitDebugAbbrevDWO() {
void DwarfDebug::emitDebugLineDWO() {
assert(useSplitDwarf() && "No split dwarf?");
if (!HasSplitTypeUnits)
return;
Asm->OutStreamer->SwitchSection(
Asm->getObjFileLowering().getDwarfLineDWOSection());
SplitTypeUnitFileTable.Emit(*Asm->OutStreamer, MCDwarfLineTableParams());
@ -2220,6 +2222,7 @@ void DwarfDebug::addDwarfTypeUnitType(DwarfCompileUnit &CU,
InfoHolder.computeSizeAndOffsetsForUnit(TU.first.get());
InfoHolder.emitUnit(TU.first.get(), useSplitDwarf());
}
HasSplitTypeUnits = useSplitDwarf();
}
CU.addDIETypeSignature(RefDie, Signature);
}

View File

@ -274,6 +274,10 @@ class DwarfDebug : public DebugHandlerBase {
/// a monolithic sequence of string offsets.
bool UseSegmentedStringOffsetsTable;
/// Whether we have emitted any type units with split DWARF (and therefore
/// need to emit a line table to the .dwo file).
bool HasSplitTypeUnits = false;
/// Separated Dwarf Variables
/// In general these will all be for bits that are left in the
/// original object file, rather than things that are meant

View File

@ -16,7 +16,9 @@
; CHECK: contents:
; Don't emit DW_AT_addr_base when there are no addresses.
; Also don't emit a split line table when there are no type units.
; FISSION-NOT: DW_AT_GNU_addr_base [DW_FORM_sec_offset]
; FISSION-NOT: .debug_line.dwo contents:
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!5}