diff options
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 27 | ||||
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h | 1 |
2 files changed, 9 insertions, 19 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index f6039cc5bc0..708cef896b5 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -2773,8 +2773,7 @@ void DwarfDebug::emitMacroFile(DIMacroFile &F, DwarfCompileUnit &U) { Asm->EmitULEB128(dwarf::DW_MACINFO_end_file); } -/// Emit macros into a debug macinfo section. -void DwarfDebug::emitDebugMacinfo() { +void DwarfDebug::emitDebugMacinfoImpl(MCSection *Section) { for (const auto &P : CUMap) { auto &TheCU = *P.second; auto *SkCU = TheCU.getSkeleton(); @@ -2783,8 +2782,7 @@ void DwarfDebug::emitDebugMacinfo() { DIMacroNodeArray Macros = CUNode->getMacros(); if (Macros.empty()) continue; - Asm->OutStreamer->SwitchSection( - Asm->getObjFileLowering().getDwarfMacinfoSection()); + Asm->OutStreamer->SwitchSection(Section); Asm->OutStreamer->EmitLabel(U.getMacroLabelBegin()); handleMacroNodes(Macros, U); Asm->OutStreamer->AddComment("End Of Macro List Mark"); @@ -2792,22 +2790,13 @@ void DwarfDebug::emitDebugMacinfo() { } } +/// Emit macros into a debug macinfo section. +void DwarfDebug::emitDebugMacinfo() { + emitDebugMacinfoImpl(Asm->getObjFileLowering().getDwarfMacinfoSection()); +} + void DwarfDebug::emitDebugMacinfoDWO() { - for (const auto &P : CUMap) { - auto &TheCU = *P.second; - auto *SkCU = TheCU.getSkeleton(); - DwarfCompileUnit &U = SkCU ? *SkCU : TheCU; - auto *CUNode = cast<DICompileUnit>(P.first); - DIMacroNodeArray Macros = CUNode->getMacros(); - if (Macros.empty()) - continue; - Asm->OutStreamer->SwitchSection( - Asm->getObjFileLowering().getDwarfMacinfoDWOSection()); - Asm->OutStreamer->EmitLabel(U.getMacroLabelBegin()); - handleMacroNodes(Macros, U); - Asm->OutStreamer->AddComment("End Of Macro List Mark"); - Asm->emitInt8(0); - } + emitDebugMacinfoImpl(Asm->getObjFileLowering().getDwarfMacinfoDWOSection()); } // DWARF5 Experimental Separate Dwarf emitters. diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h index 03949dbddea..6f54c528a50 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -510,6 +510,7 @@ class DwarfDebug : public DebugHandlerBase { void emitDebugMacinfo(); /// Emit macros into a debug macinfo.dwo section. void emitDebugMacinfoDWO(); + void emitDebugMacinfoImpl(MCSection *Section); void emitMacro(DIMacro &M); void emitMacroFile(DIMacroFile &F, DwarfCompileUnit &U); void handleMacroNodes(DIMacroNodeArray Nodes, DwarfCompileUnit &U); |