diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2018-05-18 19:46:24 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2018-05-18 19:46:24 +0000 |
commit | e3f652973e6e4fb7074b0bdc2291493e6cb8fae5 (patch) | |
tree | 4fba9f86235380483550bf1268b185f9aa2865f5 /llvm/lib/MC/MCDwarf.cpp | |
parent | 1fa76cc3ea1f3361dd4e6091ac6a5c0e833de6a4 (diff) | |
download | bcm5719-llvm-e3f652973e6e4fb7074b0bdc2291493e6cb8fae5.tar.gz bcm5719-llvm-e3f652973e6e4fb7074b0bdc2291493e6cb8fae5.zip |
Support: Simplify endian stream interface. NFCI.
Provide some free functions to reduce verbosity of endian-writing
a single value, and replace the endianness template parameter with
a field.
Part of PR37466.
Differential Revision: https://reviews.llvm.org/D47032
llvm-svn: 332757
Diffstat (limited to 'llvm/lib/MC/MCDwarf.cpp')
-rw-r--r-- | llvm/lib/MC/MCDwarf.cpp | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/llvm/lib/MC/MCDwarf.cpp b/llvm/lib/MC/MCDwarf.cpp index 0e0ea965d14..57823e419f7 100644 --- a/llvm/lib/MC/MCDwarf.cpp +++ b/llvm/lib/MC/MCDwarf.cpp @@ -1798,6 +1798,8 @@ void MCDwarfFrameEmitter::EncodeAdvanceLoc(MCContext &Context, // Scale the address delta by the minimum instruction length. AddrDelta = ScaleAddrDelta(Context, AddrDelta); + support::endianness E = + Context.getAsmInfo()->isLittleEndian() ? support::little : support::big; if (AddrDelta == 0) { } else if (isUIntN(6, AddrDelta)) { uint8_t Opcode = dwarf::DW_CFA_advance_loc | AddrDelta; @@ -1807,16 +1809,10 @@ void MCDwarfFrameEmitter::EncodeAdvanceLoc(MCContext &Context, OS << uint8_t(AddrDelta); } else if (isUInt<16>(AddrDelta)) { OS << uint8_t(dwarf::DW_CFA_advance_loc2); - if (Context.getAsmInfo()->isLittleEndian()) - support::endian::Writer<support::little>(OS).write<uint16_t>(AddrDelta); - else - support::endian::Writer<support::big>(OS).write<uint16_t>(AddrDelta); + support::endian::write<uint16_t>(OS, AddrDelta, E); } else { assert(isUInt<32>(AddrDelta)); OS << uint8_t(dwarf::DW_CFA_advance_loc4); - if (Context.getAsmInfo()->isLittleEndian()) - support::endian::Writer<support::little>(OS).write<uint32_t>(AddrDelta); - else - support::endian::Writer<support::big>(OS).write<uint32_t>(AddrDelta); + support::endian::write<uint32_t>(OS, AddrDelta, E); } } |