diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp | 16 | ||||
-rw-r--r-- | llvm/lib/MC/MCStreamer.cpp | 23 |
2 files changed, 25 insertions, 14 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp index c6e4344..e42cd5f 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp @@ -198,26 +198,14 @@ void AsmPrinter::emitDwarfLengthOrOffset(uint64_t Value) const { OutStreamer->emitIntValue(Value, getDwarfOffsetByteSize()); } -void AsmPrinter::maybeEmitDwarf64Mark() const { - if (!isDwarf64()) - return; - OutStreamer->AddComment("DWARF64 Mark"); - OutStreamer->emitInt32(dwarf::DW_LENGTH_DWARF64); -} - void AsmPrinter::emitDwarfUnitLength(uint64_t Length, const Twine &Comment) const { - assert(isDwarf64() || Length <= dwarf::DW_LENGTH_lo_reserved); - maybeEmitDwarf64Mark(); - OutStreamer->AddComment(Comment); - OutStreamer->emitIntValue(Length, getDwarfOffsetByteSize()); + OutStreamer->emitDwarfUnitLength(Length, Comment); } void AsmPrinter::emitDwarfUnitLength(const MCSymbol *Hi, const MCSymbol *Lo, const Twine &Comment) const { - maybeEmitDwarf64Mark(); - OutStreamer->AddComment(Comment); - OutStreamer->emitAbsoluteSymbolDiff(Hi, Lo, getDwarfOffsetByteSize()); + OutStreamer->emitDwarfUnitLength(Hi, Lo, Comment); } void AsmPrinter::emitCallSiteOffset(const MCSymbol *Hi, const MCSymbol *Lo, diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index 4b5ae3c..4f2ec51 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -991,6 +991,29 @@ void MCStreamer::Finish(SMLoc EndLoc) { finishImpl(); } +void MCStreamer::maybeEmitDwarf64Mark() { + if (Context.getDwarfFormat() != dwarf::DWARF64) + return; + AddComment("DWARF64 Mark"); + emitInt32(dwarf::DW_LENGTH_DWARF64); +} + +void MCStreamer::emitDwarfUnitLength(uint64_t Length, const Twine &Comment) { + assert(Context.getDwarfFormat() == dwarf::DWARF64 || + Length <= dwarf::DW_LENGTH_lo_reserved); + maybeEmitDwarf64Mark(); + AddComment(Comment); + emitIntValue(Length, dwarf::getDwarfOffsetByteSize(Context.getDwarfFormat())); +} + +void MCStreamer::emitDwarfUnitLength(const MCSymbol *Hi, const MCSymbol *Lo, + const Twine &Comment) { + maybeEmitDwarf64Mark(); + AddComment(Comment); + emitAbsoluteSymbolDiff( + Hi, Lo, dwarf::getDwarfOffsetByteSize(Context.getDwarfFormat())); +} + void MCStreamer::emitAssignment(MCSymbol *Symbol, const MCExpr *Value) { visitUsedExpr(*Value); Symbol->setVariableValue(Value); |