From 1e0116c91dbd44574f4f22dc0646203d6cd159f6 Mon Sep 17 00:00:00 2001 From: Paul Robinson Date: Thu, 1 Mar 2018 00:12:35 +0000 Subject: [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. llvm-svn: 326395 --- llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 3 +++ llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h | 4 ++++ 2 files changed, 7 insertions(+) (limited to 'llvm/lib/CodeGen/AsmPrinter') diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index a9aa00cefc1..3a755306669 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -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); } diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h index 46d644657a8..e1de946f6f4 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -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 -- cgit v1.2.3