diff options
Diffstat (limited to 'contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp')
| -rw-r--r-- | contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp b/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp index 728e7757fd28..a405dd70c307 100644 --- a/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp +++ b/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp @@ -75,10 +75,9 @@ namespace { class PPCAsmBackend : public MCAsmBackend { const Target &TheTarget; - bool IsLittleEndian; public: - PPCAsmBackend(const Target &T, bool isLittle) : MCAsmBackend(), TheTarget(T), - IsLittleEndian(isLittle) {} + PPCAsmBackend(const Target &T, support::endianness Endian) + : MCAsmBackend(Endian), TheTarget(T) {} unsigned getNumFixupKinds() const override { return PPC::NumTargetFixupKinds; @@ -111,12 +110,15 @@ public: assert(unsigned(Kind - FirstTargetFixupKind) < getNumFixupKinds() && "Invalid kind!"); - return (IsLittleEndian? InfosLE : InfosBE)[Kind - FirstTargetFixupKind]; + return (Endian == support::little + ? InfosLE + : InfosBE)[Kind - FirstTargetFixupKind]; } void applyFixup(const MCAssembler &Asm, const MCFixup &Fixup, const MCValue &Target, MutableArrayRef<char> Data, - uint64_t Value, bool IsResolved) const override { + uint64_t Value, bool IsResolved, + const MCSubtargetInfo *STI) const override { Value = adjustFixupValue(Fixup.getKind(), Value); if (!Value) return; // Doesn't change encoding. @@ -127,7 +129,7 @@ public: // from the fixup value. The Value has been "split up" into the appropriate // bitfields above. for (unsigned i = 0; i != NumBytes; ++i) { - unsigned Idx = IsLittleEndian ? i : (NumBytes - 1 - i); + unsigned Idx = Endian == support::little ? i : (NumBytes - 1 - i); Data[Offset + i] |= uint8_t((Value >> (Idx * 8)) & 0xff); } } @@ -156,7 +158,8 @@ public: } } - bool mayNeedRelaxation(const MCInst &Inst) const override { + bool mayNeedRelaxation(const MCInst &Inst, + const MCSubtargetInfo &STI) const override { // FIXME. return false; } @@ -175,12 +178,12 @@ public: llvm_unreachable("relaxInstruction() unimplemented"); } - bool writeNopData(uint64_t Count, MCObjectWriter *OW) const override { + bool writeNopData(raw_ostream &OS, uint64_t Count) const override { uint64_t NumNops = Count / 4; for (uint64_t i = 0; i != NumNops; ++i) - OW->write32(0x60000000); + support::endian::write<uint32_t>(OS, 0x60000000, Endian); - OW->WriteZeros(Count % 4); + OS.write_zeros(Count % 4); return true; } @@ -191,10 +194,6 @@ public: assert(Name == "ppc32" && "Unknown target name!"); return 4; } - - bool isLittleEndian() const { - return IsLittleEndian; - } }; } // end anonymous namespace @@ -203,13 +202,12 @@ public: namespace { class DarwinPPCAsmBackend : public PPCAsmBackend { public: - DarwinPPCAsmBackend(const Target &T) : PPCAsmBackend(T, false) { } + DarwinPPCAsmBackend(const Target &T) : PPCAsmBackend(T, support::big) { } - std::unique_ptr<MCObjectWriter> - createObjectWriter(raw_pwrite_stream &OS) const override { + std::unique_ptr<MCObjectTargetWriter> + createObjectTargetWriter() const override { bool is64 = getPointerSize() == 8; return createPPCMachObjectWriter( - OS, /*Is64Bit=*/is64, (is64 ? MachO::CPU_TYPE_POWERPC64 : MachO::CPU_TYPE_POWERPC), MachO::CPU_SUBTYPE_POWERPC_ALL); @@ -219,13 +217,14 @@ namespace { class ELFPPCAsmBackend : public PPCAsmBackend { uint8_t OSABI; public: - ELFPPCAsmBackend(const Target &T, bool IsLittleEndian, uint8_t OSABI) : - PPCAsmBackend(T, IsLittleEndian), OSABI(OSABI) { } + ELFPPCAsmBackend(const Target &T, support::endianness Endian, + uint8_t OSABI) + : PPCAsmBackend(T, Endian), OSABI(OSABI) {} - std::unique_ptr<MCObjectWriter> - createObjectWriter(raw_pwrite_stream &OS) const override { + std::unique_ptr<MCObjectTargetWriter> + createObjectTargetWriter() const override { bool is64 = getPointerSize() == 8; - return createPPCELFObjectWriter(OS, is64, isLittleEndian(), OSABI); + return createPPCELFObjectWriter(is64, OSABI); } }; @@ -241,5 +240,6 @@ MCAsmBackend *llvm::createPPCAsmBackend(const Target &T, uint8_t OSABI = MCELFObjectTargetWriter::getOSABI(TT.getOS()); bool IsLittleEndian = TT.getArch() == Triple::ppc64le; - return new ELFPPCAsmBackend(T, IsLittleEndian, OSABI); + return new ELFPPCAsmBackend( + T, IsLittleEndian ? support::little : support::big, OSABI); } |
