diff --git a/llvm/include/llvm/MC/MCDwarf.h b/llvm/include/llvm/MC/MCDwarf.h index 70da5f76e76659..5bf6496806d824 100644 --- a/llvm/include/llvm/MC/MCDwarf.h +++ b/llvm/include/llvm/MC/MCDwarf.h @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -387,11 +388,11 @@ class MCDwarfLineAddr { int64_t LineDelta, uint64_t AddrDelta, raw_ostream &OS); /// Utility function to encode a Dwarf pair of LineDelta and AddrDeltas using - /// fixed length operands. - static bool FixedEncode(MCContext &Context, - MCDwarfLineTableParams Params, - int64_t LineDelta, uint64_t AddrDelta, - raw_ostream &OS, uint32_t *Offset, uint32_t *Size); + /// fixed length operands. Returns (Offset, Size, SetDelta). + static std::tuple fixedEncode(MCContext &Context, + int64_t LineDelta, + uint64_t AddrDelta, + raw_ostream &OS); /// Utility function to emit the encoding to a streamer. static void Emit(MCStreamer *MCOS, MCDwarfLineTableParams Params, diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp index d8b8b505bf5bcf..ce296d7faa4588 100644 --- a/llvm/lib/MC/MCAssembler.cpp +++ b/llvm/lib/MC/MCAssembler.cpp @@ -1119,10 +1119,9 @@ bool MCAssembler::relaxDwarfLineAddr(MCAsmLayout &Layout, } else { uint32_t Offset; uint32_t Size; - bool SetDelta = MCDwarfLineAddr::FixedEncode(Context, - getDWARFLinetableParams(), - LineDelta, AddrDelta, - OSE, &Offset, &Size); + bool SetDelta; + std::tie(Offset, Size, SetDelta) = + MCDwarfLineAddr::fixedEncode(Context, LineDelta, AddrDelta, OSE); // Add Fixups for address delta or new address. const MCExpr *FixupExpr; if (SetDelta) { diff --git a/llvm/lib/MC/MCDwarf.cpp b/llvm/lib/MC/MCDwarf.cpp index 12a7d9b6e5899f..410ca296eaf2e0 100644 --- a/llvm/lib/MC/MCDwarf.cpp +++ b/llvm/lib/MC/MCDwarf.cpp @@ -766,11 +766,10 @@ void MCDwarfLineAddr::Encode(MCContext &Context, MCDwarfLineTableParams Params, } } -bool MCDwarfLineAddr::FixedEncode(MCContext &Context, - MCDwarfLineTableParams Params, - int64_t LineDelta, uint64_t AddrDelta, - raw_ostream &OS, - uint32_t *Offset, uint32_t *Size) { +std::tuple +MCDwarfLineAddr::fixedEncode(MCContext &Context, int64_t LineDelta, + uint64_t AddrDelta, raw_ostream &OS) { + uint32_t Offset, Size; if (LineDelta != INT64_MAX) { OS << char(dwarf::DW_LNS_advance_line); encodeSLEB128(LineDelta, OS); @@ -790,15 +789,15 @@ bool MCDwarfLineAddr::FixedEncode(MCContext &Context, encodeULEB128(1 + AddrSize, OS); OS << char(dwarf::DW_LNE_set_address); // Generate fixup for the address. - *Offset = OS.tell(); - *Size = AddrSize; + Offset = OS.tell(); + Size = AddrSize; SetDelta = false; OS.write_zeros(AddrSize); } else { OS << char(dwarf::DW_LNS_fixed_advance_pc); // Generate fixup for 2-bytes address delta. - *Offset = OS.tell(); - *Size = 2; + Offset = OS.tell(); + Size = 2; SetDelta = true; OS << char(0); OS << char(0); @@ -812,7 +811,7 @@ bool MCDwarfLineAddr::FixedEncode(MCContext &Context, OS << char(dwarf::DW_LNS_copy); } - return SetDelta; + return {Offset, Size, SetDelta}; } // Utility function to write a tuple for .debug_abbrev.