From: Eugene Zelenko Date: Wed, 1 Feb 2017 01:22:51 +0000 (+0000) Subject: [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c7e2e47b2719d0f65cf2b075a364987f9437d299;p=llvm [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293729 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Mips/Disassembler/MipsDisassembler.cpp b/lib/Target/Mips/Disassembler/MipsDisassembler.cpp index f80efb18507..2f709c61ec6 100644 --- a/lib/Target/Mips/Disassembler/MipsDisassembler.cpp +++ b/lib/Target/Mips/Disassembler/MipsDisassembler.cpp @@ -1,4 +1,4 @@ -//===- MipsDisassembler.cpp - Disassembler for Mips -------------*- C++ -*-===// +//===- MipsDisassembler.cpp - Disassembler for Mips -----------------------===// // // The LLVM Compiler Infrastructure // @@ -12,15 +12,21 @@ //===----------------------------------------------------------------------===// #include "Mips.h" -#include "MipsRegisterInfo.h" -#include "MipsSubtarget.h" +#include "llvm/ADT/ArrayRef.h" #include "llvm/MC/MCContext.h" #include "llvm/MC/MCDisassembler/MCDisassembler.h" #include "llvm/MC/MCFixedLenDisassembler.h" #include "llvm/MC/MCInst.h" #include "llvm/MC/MCSubtargetInfo.h" +#include "llvm/MC/MCRegisterInfo.h" +#include "llvm/Support/Compiler.h" +#include "llvm/Support/Debug.h" +#include "llvm/Support/ErrorHandling.h" #include "llvm/Support/MathExtras.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/Support/TargetRegistry.h" +#include +#include using namespace llvm; @@ -33,6 +39,7 @@ namespace { class MipsDisassembler : public MCDisassembler { bool IsMicroMips; bool IsBigEndian; + public: MipsDisassembler(const MCSubtargetInfo &STI, MCContext &Ctx, bool IsBigEndian) : MCDisassembler(STI, Ctx), @@ -42,9 +49,11 @@ public: bool hasMips2() const { return STI.getFeatureBits()[Mips::FeatureMips2]; } bool hasMips3() const { return STI.getFeatureBits()[Mips::FeatureMips3]; } bool hasMips32() const { return STI.getFeatureBits()[Mips::FeatureMips32]; } + bool hasMips32r6() const { return STI.getFeatureBits()[Mips::FeatureMips32r6]; } + bool isFP64() const { return STI.getFeatureBits()[Mips::FeatureFP64Bit]; } bool isGP64() const { return STI.getFeatureBits()[Mips::FeatureGP64Bit]; } @@ -527,11 +536,13 @@ static DecodeStatus DecodeMovePRegPair(MCInst &Inst, unsigned Insn, const void *Decoder); namespace llvm { + Target &getTheMipselTarget(); Target &getTheMipsTarget(); Target &getTheMips64Target(); Target &getTheMips64elTarget(); -} + +} // end namespace llvm static MCDisassembler *createMipsDisassembler( const Target &T, @@ -1267,16 +1278,13 @@ static DecodeStatus DecodeCPU16RegsRegisterClass(MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder) { - return MCDisassembler::Fail; - } static DecodeStatus DecodeGPR64RegisterClass(MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder) { - if (RegNo > 31) return MCDisassembler::Fail; @@ -1620,7 +1628,7 @@ static DecodeStatus DecodeMSA128Mem(MCInst &Inst, unsigned Insn, switch(Inst.getOpcode()) { default: - assert (0 && "Unexpected instruction"); + assert(false && "Unexpected instruction"); return MCDisassembler::Fail; break; case Mips::LD_B: @@ -1980,7 +1988,6 @@ static DecodeStatus DecodeAFGR64RegisterClass(MCInst &Inst, if (RegNo > 30 || RegNo %2) return MCDisassembler::Fail; - ; unsigned Reg = getReg(Decoder, Mips::AFGR64RegClassID, RegNo /2); Inst.addOperand(MCOperand::createReg(Reg)); return MCDisassembler::Success; @@ -2128,7 +2135,6 @@ static DecodeStatus DecodeJumpTarget(MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder) { - unsigned JumpOffset = fieldFromInstruction(Insn, 0, 26) << 2; Inst.addOperand(MCOperand::createImm(JumpOffset)); return MCDisassembler::Success; @@ -2363,7 +2369,6 @@ static DecodeStatus DecodeRegListOperand16(MCInst &Inst, unsigned Insn, static DecodeStatus DecodeMovePRegPair(MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder) { - unsigned RegPair = fieldFromInstruction(Insn, 7, 3); switch (RegPair) { diff --git a/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.cpp b/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.cpp index 932d38a0b9f..4a2b75b9ae4 100644 --- a/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.cpp +++ b/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.cpp @@ -1,4 +1,4 @@ -//===-- MipsABIFlagsSection.cpp - Mips ELF ABI Flags Section ---*- C++ -*--===// +//===- MipsABIFlagsSection.cpp - Mips ELF ABI Flags Section ---------------===// // // The LLVM Compiler Infrastructure // @@ -7,7 +7,11 @@ // //===----------------------------------------------------------------------===// -#include "MipsABIFlagsSection.h" +#include "MCTargetDesc/MipsABIFlagsSection.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/MC/MCStreamer.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/MipsABIFlags.h" using namespace llvm; @@ -51,6 +55,7 @@ uint8_t MipsABIFlagsSection::getCPR1SizeValue() { } namespace llvm { + MCStreamer &operator<<(MCStreamer &OS, MipsABIFlagsSection &ABIFlagsSection) { // Write out a Elf_Internal_ABIFlags_v0 struct OS.EmitIntValue(ABIFlagsSection.getVersionValue(), 2); // version @@ -66,4 +71,5 @@ MCStreamer &operator<<(MCStreamer &OS, MipsABIFlagsSection &ABIFlagsSection) { OS.EmitIntValue(ABIFlagsSection.getFlags2Value(), 4); // flags2 return OS; } -} + +} // end namespace llvm diff --git a/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.h b/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.h index 3966cae9fe3..f3854102702 100644 --- a/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.h +++ b/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.h @@ -1,4 +1,4 @@ -//===-- MipsABIFlagsSection.h - Mips ELF ABI Flags Section -----*- C++ -*--===// +//===- MipsABIFlagsSection.h - Mips ELF ABI Flags Section -------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -10,9 +10,10 @@ #ifndef LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSABIFLAGSSECTION_H #define LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSABIFLAGSSECTION_H -#include "llvm/MC/MCStreamer.h" +#include "llvm/ADT/StringRef.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/MipsABIFlags.h" +#include namespace llvm { @@ -23,36 +24,32 @@ struct MipsABIFlagsSection { enum class FpABIKind { ANY, XX, S32, S64, SOFT }; // Version of flags structure. - uint16_t Version; + uint16_t Version = 0; // The level of the ISA: 1-5, 32, 64. - uint8_t ISALevel; + uint8_t ISALevel = 0; // The revision of ISA: 0 for MIPS V and below, 1-n otherwise. - uint8_t ISARevision; + uint8_t ISARevision = 0; // The size of general purpose registers. - Mips::AFL_REG GPRSize; + Mips::AFL_REG GPRSize = Mips::AFL_REG_NONE; // The size of co-processor 1 registers. - Mips::AFL_REG CPR1Size; + Mips::AFL_REG CPR1Size = Mips::AFL_REG_NONE; // The size of co-processor 2 registers. - Mips::AFL_REG CPR2Size; + Mips::AFL_REG CPR2Size = Mips::AFL_REG_NONE; // Processor-specific extension. - Mips::AFL_EXT ISAExtension; + Mips::AFL_EXT ISAExtension = Mips::AFL_EXT_NONE; // Mask of ASEs used. - uint32_t ASESet; + uint32_t ASESet = 0; - bool OddSPReg; + bool OddSPReg = false; - bool Is32BitABI; + bool Is32BitABI = false; protected: // The floating-point ABI. - FpABIKind FpABI; + FpABIKind FpABI = FpABIKind::ANY; public: - MipsABIFlagsSection() - : Version(0), ISALevel(0), ISARevision(0), GPRSize(Mips::AFL_REG_NONE), - CPR1Size(Mips::AFL_REG_NONE), CPR2Size(Mips::AFL_REG_NONE), - ISAExtension(Mips::AFL_EXT_NONE), ASESet(0), OddSPReg(false), - Is32BitABI(false), FpABI(FpABIKind::ANY) {} + MipsABIFlagsSection() = default; uint16_t getVersionValue() { return (uint16_t)Version; } uint8_t getISALevelValue() { return (uint8_t)ISALevel; } @@ -80,6 +77,7 @@ public: FpABI = Value; Is32BitABI = IsABI32Bit; } + StringRef getFpABIString(FpABIKind Value); template @@ -195,6 +193,7 @@ public: }; MCStreamer &operator<<(MCStreamer &OS, MipsABIFlagsSection &ABIFlagsSection); -} -#endif +} // end namespace llvm + +#endif // LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSABIFLAGSSECTION_H diff --git a/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp b/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp index 0614316d5ac..8b81ffaa85c 100644 --- a/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp +++ b/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp @@ -10,22 +10,29 @@ // This file implements the MipsMCCodeEmitter class. // //===----------------------------------------------------------------------===// -// -#include "MipsMCCodeEmitter.h" #include "MCTargetDesc/MipsFixupKinds.h" #include "MCTargetDesc/MipsMCExpr.h" #include "MCTargetDesc/MipsMCTargetDesc.h" +#include "MipsMCCodeEmitter.h" #include "llvm/ADT/APFloat.h" +#include "llvm/ADT/APInt.h" #include "llvm/ADT/SmallVector.h" #include "llvm/MC/MCContext.h" #include "llvm/MC/MCExpr.h" #include "llvm/MC/MCFixup.h" #include "llvm/MC/MCInst.h" +#include "llvm/MC/MCInstrDesc.h" #include "llvm/MC/MCInstrInfo.h" #include "llvm/MC/MCRegisterInfo.h" #include "llvm/MC/MCSubtargetInfo.h" +#include "llvm/Support/Casting.h" +#include "llvm/Support/ErrorHandling.h" #include "llvm/Support/raw_ostream.h" +#include +#include + +using namespace llvm; #define DEBUG_TYPE "mccodeemitter" @@ -34,6 +41,7 @@ #undef GET_INSTRMAP_INFO namespace llvm { + MCCodeEmitter *createMipsMCCodeEmitterEB(const MCInstrInfo &MCII, const MCRegisterInfo &MRI, MCContext &Ctx) { @@ -45,12 +53,12 @@ MCCodeEmitter *createMipsMCCodeEmitterEL(const MCInstrInfo &MCII, MCContext &Ctx) { return new MipsMCCodeEmitter(MCII, Ctx, true); } -} // End of namespace llvm. + +} // end namespace llvm // If the D instruction has a shift amount that is greater // than 31 (checked in calling routine), lower it to a D32 instruction static void LowerLargeShift(MCInst& Inst) { - assert(Inst.getNumOperands() == 3 && "Invalid no. of operands for shift!"); assert(Inst.getOperand(2).isImm()); @@ -115,12 +123,10 @@ static void LowerDins(MCInst& InstIn) { assert(pos < 32 && "DINS cannot have both size and pos > 32"); InstIn.getOperand(3).setImm(size - 32); InstIn.setOpcode(Mips::DINSM); - return; } // Fix a bad compact branch encoding for beqc/bnec. void MipsMCCodeEmitter::LowerCompactBranch(MCInst& Inst) const { - // Encoding may be illegal !(rs < rt), but this situation is // easily fixed. unsigned RegOp0 = Inst.getOperand(0).getReg(); @@ -146,7 +152,6 @@ void MipsMCCodeEmitter::LowerCompactBranch(MCInst& Inst) const { Inst.getOperand(0).setReg(RegOp1); Inst.getOperand(1).setReg(RegOp0); - } bool MipsMCCodeEmitter::isMicroMips(const MCSubtargetInfo &STI) const { @@ -186,7 +191,6 @@ encodeInstruction(const MCInst &MI, raw_ostream &OS, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - // Non-pseudo instructions that get changed for direct object // only based on operand values. // If this list of instructions get much longer we will move @@ -272,7 +276,6 @@ unsigned MipsMCCodeEmitter:: getBranchTargetOpValue(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 4. @@ -295,7 +298,6 @@ unsigned MipsMCCodeEmitter:: getBranchTargetOpValue1SImm16(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 2. @@ -318,7 +320,6 @@ unsigned MipsMCCodeEmitter:: getBranchTargetOpValueMMR6(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 2. @@ -342,7 +343,6 @@ unsigned MipsMCCodeEmitter:: getBranchTargetOpValueLsl2MMR6(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 4. @@ -366,7 +366,6 @@ unsigned MipsMCCodeEmitter:: getBranchTarget7OpValueMM(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 2. @@ -388,7 +387,6 @@ unsigned MipsMCCodeEmitter:: getBranchTargetOpValueMMPC10(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 2. @@ -410,7 +408,6 @@ unsigned MipsMCCodeEmitter:: getBranchTargetOpValueMM(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 2. @@ -433,7 +430,6 @@ unsigned MipsMCCodeEmitter:: getBranchTarget21OpValue(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 4. @@ -456,7 +452,6 @@ unsigned MipsMCCodeEmitter:: getBranchTarget21OpValueMM(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 4. @@ -479,7 +474,6 @@ unsigned MipsMCCodeEmitter:: getBranchTarget26OpValue(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 4. @@ -501,7 +495,6 @@ getBranchTarget26OpValue(const MCInst &MI, unsigned OpNo, unsigned MipsMCCodeEmitter::getBranchTarget26OpValueMM( const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 2. @@ -525,7 +518,6 @@ unsigned MipsMCCodeEmitter:: getJumpOffset16OpValue(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); if (MO.isImm()) return MO.getImm(); @@ -544,7 +536,6 @@ unsigned MipsMCCodeEmitter:: getJumpTargetOpValue(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 4. if (MO.isImm()) return MO.getImm()>>2; @@ -562,7 +553,6 @@ unsigned MipsMCCodeEmitter:: getJumpTargetOpValueMM(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); // If the destination is an immediate, divide by 2. if (MO.isImm()) return MO.getImm() >> 1; @@ -580,7 +570,6 @@ unsigned MipsMCCodeEmitter:: getUImm5Lsl2Encoding(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); if (MO.isImm()) { // The immediate is encoded as 'immediate << 2'. @@ -599,7 +588,6 @@ unsigned MipsMCCodeEmitter:: getSImm3Lsa2Value(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); if (MO.isImm()) { int Value = MO.getImm(); @@ -613,7 +601,6 @@ unsigned MipsMCCodeEmitter:: getUImm6Lsl2Encoding(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); if (MO.isImm()) { unsigned Value = MO.getImm(); @@ -627,7 +614,6 @@ unsigned MipsMCCodeEmitter:: getSImm9AddiuspValue(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); if (MO.isImm()) { unsigned Binary = (MO.getImm() >> 2) & 0x0000ffff; @@ -711,7 +697,7 @@ getExprOpValue(const MCExpr *Expr, SmallVectorImpl &Fixups, case MipsMCExpr::MEK_GPREL: FixupKind = Mips::fixup_Mips_GPREL16; break; - case MipsMCExpr::MEK_LO: { + case MipsMCExpr::MEK_LO: // Check for %lo(%neg(%gp_rel(X))) if (MipsExpr->isGpOff()) { FixupKind = Mips::fixup_Mips_GPOFF_LO; @@ -720,7 +706,6 @@ getExprOpValue(const MCExpr *Expr, SmallVectorImpl &Fixups, FixupKind = isMicroMips(STI) ? Mips::fixup_MICROMIPS_LO16 : Mips::fixup_Mips_LO16; break; - } case MipsMCExpr::MEK_HIGHEST: FixupKind = Mips::fixup_Mips_HIGHEST; break; diff --git a/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.h b/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.h index 2d041dcbf04..d12d3195521 100644 --- a/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.h +++ b/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.h @@ -1,4 +1,4 @@ -//===-- MipsMCCodeEmitter.h - Convert Mips Code to Machine Code -----------===// +//===- MipsMCCodeEmitter.h - Convert Mips Code to Machine Code --*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -10,29 +10,25 @@ // This file defines the MipsMCCodeEmitter class. // //===----------------------------------------------------------------------===// -// #ifndef LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSMCCODEEMITTER_H #define LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSMCCODEEMITTER_H #include "llvm/MC/MCCodeEmitter.h" -#include "llvm/Support/DataTypes.h" - -using namespace llvm; +#include namespace llvm { + class MCContext; class MCExpr; +class MCFixup; class MCInst; class MCInstrInfo; -class MCFixup; class MCOperand; class MCSubtargetInfo; class raw_ostream; class MipsMCCodeEmitter : public MCCodeEmitter { - MipsMCCodeEmitter(const MipsMCCodeEmitter &) = delete; - void operator=(const MipsMCCodeEmitter &) = delete; const MCInstrInfo &MCII; MCContext &Ctx; bool IsLittleEndian; @@ -43,8 +39,9 @@ class MipsMCCodeEmitter : public MCCodeEmitter { public: MipsMCCodeEmitter(const MCInstrInfo &mcii, MCContext &Ctx_, bool IsLittle) : MCII(mcii), Ctx(Ctx_), IsLittleEndian(IsLittle) {} - - ~MipsMCCodeEmitter() override {} + MipsMCCodeEmitter(const MipsMCCodeEmitter &) = delete; + MipsMCCodeEmitter &operator=(const MipsMCCodeEmitter &) = delete; + ~MipsMCCodeEmitter() override = default; void EmitByte(unsigned char C, raw_ostream &OS) const; @@ -270,9 +267,11 @@ public: unsigned getRegisterListOpValue16(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const; - private: + +private: void LowerCompactBranch(MCInst& Inst) const; -}; // class MipsMCCodeEmitter -} // namespace llvm. +}; + +} // end namespace llvm -#endif +#endif // LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSMCCODEEMITTER_H diff --git a/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp b/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp index aef9bd3a8e2..8c2617a687b 100644 --- a/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp +++ b/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp @@ -20,7 +20,11 @@ #include "Mips.h" #include "MipsELFStreamer.h" #include "MipsMCNaCl.h" +#include "llvm/MC/MCAssembler.h" #include "llvm/MC/MCELFStreamer.h" +#include "llvm/MC/MCInst.h" +#include "llvm/Support/ErrorHandling.h" +#include using namespace llvm; @@ -38,14 +42,14 @@ class MipsNaClELFStreamer : public MipsELFStreamer { public: MipsNaClELFStreamer(MCContext &Context, MCAsmBackend &TAB, raw_pwrite_stream &OS, MCCodeEmitter *Emitter) - : MipsELFStreamer(Context, TAB, OS, Emitter), PendingCall(false) {} + : MipsELFStreamer(Context, TAB, OS, Emitter) {} - ~MipsNaClELFStreamer() override {} + ~MipsNaClELFStreamer() override = default; private: // Whether we started the sandboxing sequence for calls. Calls are bundled // with branch delays and aligned to the bundle end. - bool PendingCall; + bool PendingCall = false; bool isIndirectJump(const MCInst &MI) { if (MI.getOpcode() == Mips::JALR) { @@ -265,4 +269,4 @@ MCELFStreamer *createMipsNaClELFStreamer(MCContext &Context, MCAsmBackend &TAB, return S; } -} +} // end namespace llvm diff --git a/lib/Target/Mips/MipsDelaySlotFiller.cpp b/lib/Target/Mips/MipsDelaySlotFiller.cpp index c821084f68c..ae58c26e145 100644 --- a/lib/Target/Mips/MipsDelaySlotFiller.cpp +++ b/lib/Target/Mips/MipsDelaySlotFiller.cpp @@ -14,21 +14,39 @@ #include "MCTargetDesc/MipsMCNaCl.h" #include "Mips.h" #include "MipsInstrInfo.h" +#include "MipsSubtarget.h" #include "MipsTargetMachine.h" #include "llvm/ADT/BitVector.h" +#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/PointerUnion.h" #include "llvm/ADT/SmallPtrSet.h" +#include "llvm/ADT/SmallVector.h" #include "llvm/ADT/Statistic.h" +#include "llvm/ADT/StringRef.h" #include "llvm/Analysis/AliasAnalysis.h" #include "llvm/Analysis/ValueTracking.h" +#include "llvm/CodeGen/MachineBasicBlock.h" #include "llvm/CodeGen/MachineBranchProbabilityInfo.h" +#include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/CodeGen/MachineInstr.h" #include "llvm/CodeGen/MachineInstrBuilder.h" +#include "llvm/CodeGen/MachineOperand.h" #include "llvm/CodeGen/MachineRegisterInfo.h" #include "llvm/CodeGen/PseudoSourceValue.h" +#include "llvm/MC/MCInstrDesc.h" +#include "llvm/MC/MCRegisterInfo.h" +#include "llvm/Support/Casting.h" +#include "llvm/Support/CodeGen.h" #include "llvm/Support/CommandLine.h" -#include "llvm/Target/TargetInstrInfo.h" +#include "llvm/Support/ErrorHandling.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetRegisterInfo.h" +#include +#include +#include +#include +#include using namespace llvm; @@ -84,6 +102,7 @@ static cl::opt MipsCompactBranchPolicy( ); namespace { + typedef MachineBasicBlock::iterator Iter; typedef MachineBasicBlock::reverse_iterator ReverseIter; typedef SmallDenseMap BB2BrMap; @@ -91,6 +110,7 @@ namespace { class RegDefsUses { public: RegDefsUses(const TargetRegisterInfo &TRI); + void init(const MachineInstr &MI); /// This function sets all caller-saved registers in Defs. @@ -120,18 +140,18 @@ namespace { /// Base class for inspecting loads and stores. class InspectMemInstr { public: - InspectMemInstr(bool ForbidMemInstr_) - : OrigSeenLoad(false), OrigSeenStore(false), SeenLoad(false), - SeenStore(false), ForbidMemInstr(ForbidMemInstr_) {} + InspectMemInstr(bool ForbidMemInstr_) : ForbidMemInstr(ForbidMemInstr_) {} + virtual ~InspectMemInstr() = default; /// Return true if MI cannot be moved to delay slot. bool hasHazard(const MachineInstr &MI); - virtual ~InspectMemInstr() {} - protected: /// Flags indicating whether loads or stores have been seen. - bool OrigSeenLoad, OrigSeenStore, SeenLoad, SeenStore; + bool OrigSeenLoad = false; + bool OrigSeenStore = false; + bool SeenLoad = false; + bool SeenStore = false; /// Memory instructions are not allowed to move to delay slot if this flag /// is true. @@ -145,6 +165,7 @@ namespace { class NoMemInstr : public InspectMemInstr { public: NoMemInstr() : InspectMemInstr(true) {} + private: bool hasHazard_(const MachineInstr &MI) override { return true; } }; @@ -153,6 +174,7 @@ namespace { class LoadFromStackOrConst : public InspectMemInstr { public: LoadFromStackOrConst() : InspectMemInstr(false) {} + private: bool hasHazard_(const MachineInstr &MI) override; }; @@ -183,7 +205,8 @@ namespace { /// Flags indicating whether loads or stores with no underlying objects have /// been seen. - bool SeenNoObjLoad, SeenNoObjStore; + bool SeenNoObjLoad = false; + bool SeenNoObjStore = false; }; class Filler : public MachineFunctionPass { @@ -271,8 +294,10 @@ namespace { static char ID; }; + char Filler::ID = 0; -} // end of anonymous namespace + +} // end anonymous namespace static bool hasUnoccupiedSlot(const MachineInstr *MI) { return MI->hasDelaySlot() && !MI->isBundledWithSucc(); @@ -458,8 +483,7 @@ bool LoadFromStackOrConst::hasHazard_(const MachineInstr &MI) { } MemDefsUses::MemDefsUses(const DataLayout &DL, const MachineFrameInfo *MFI_) - : InspectMemInstr(false), MFI(MFI_), DL(DL), SeenNoObjLoad(false), - SeenNoObjStore(false) {} + : InspectMemInstr(false), MFI(MFI_), DL(DL) {} bool MemDefsUses::hasHazard_(const MachineInstr &MI) { bool HasHazard = false; @@ -646,12 +670,6 @@ bool Filler::runOnMachineBasicBlock(MachineBasicBlock &MBB) { return Changed; } -/// createMipsDelaySlotFillerPass - Returns a pass that fills in delay -/// slots in Mips MachineFunctions -FunctionPass *llvm::createMipsDelaySlotFillerPass(MipsTargetMachine &tm) { - return new Filler(tm); -} - template bool Filler::searchRange(MachineBasicBlock &MBB, IterTy Begin, IterTy End, RegDefsUses &RegDU, InspectMemInstr& IM, Iter Slot, @@ -889,3 +907,9 @@ bool Filler::terminateSearch(const MachineInstr &Candidate) const { Candidate.isPosition() || Candidate.isInlineAsm() || Candidate.hasUnmodeledSideEffects()); } + +/// createMipsDelaySlotFillerPass - Returns a pass that fills in delay +/// slots in Mips MachineFunctions +FunctionPass *llvm::createMipsDelaySlotFillerPass(MipsTargetMachine &tm) { + return new Filler(tm); +} diff --git a/lib/Target/Mips/MipsLongBranch.cpp b/lib/Target/Mips/MipsLongBranch.cpp index 1087d0e0140..100503700a7 100644 --- a/lib/Target/Mips/MipsLongBranch.cpp +++ b/lib/Target/Mips/MipsLongBranch.cpp @@ -13,20 +13,31 @@ // FIXME: Fix pc-region jump instructions which cross 256MB segment boundaries. //===----------------------------------------------------------------------===// -#include "Mips.h" +#include "MCTargetDesc/MipsABIInfo.h" #include "MCTargetDesc/MipsBaseInfo.h" #include "MCTargetDesc/MipsMCNaCl.h" +#include "Mips.h" +#include "MipsInstrInfo.h" #include "MipsMachineFunction.h" +#include "MipsSubtarget.h" #include "MipsTargetMachine.h" +#include "llvm/ADT/SmallVector.h" #include "llvm/ADT/Statistic.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/CodeGen/MachineBasicBlock.h" +#include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/CodeGen/MachineInstr.h" #include "llvm/CodeGen/MachineInstrBuilder.h" -#include "llvm/IR/Function.h" +#include "llvm/CodeGen/MachineOperand.h" +#include "llvm/IR/DebugLoc.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ErrorHandling.h" #include "llvm/Support/MathExtras.h" -#include "llvm/Target/TargetInstrInfo.h" #include "llvm/Target/TargetMachine.h" -#include "llvm/Target/TargetRegisterInfo.h" +#include +#include +#include using namespace llvm; @@ -47,21 +58,23 @@ static cl::opt ForceLongBranch( cl::Hidden); namespace { + typedef MachineBasicBlock::iterator Iter; typedef MachineBasicBlock::reverse_iterator ReverseIter; struct MBBInfo { - uint64_t Size, Address; - bool HasLongBranch; - MachineInstr *Br; + uint64_t Size = 0; + uint64_t Address; + bool HasLongBranch = false; + MachineInstr *Br = nullptr; - MBBInfo() : Size(0), HasLongBranch(false), Br(nullptr) {} + MBBInfo() = default; }; class MipsLongBranch : public MachineFunctionPass { - public: static char ID; + MipsLongBranch(TargetMachine &tm) : MachineFunctionPass(ID), TM(tm), IsPIC(TM.isPositionIndependent()), ABI(static_cast(TM).getABI()) {} @@ -92,13 +105,8 @@ namespace { }; char MipsLongBranch::ID = 0; -} // end of anonymous namespace -/// createMipsLongBranchPass - Returns a pass that converts branches to long -/// branches. -FunctionPass *llvm::createMipsLongBranchPass(MipsTargetMachine &tm) { - return new MipsLongBranch(tm); -} +} // end anonymous namespace /// Iterate over list of Br's operands and search for a MachineBasicBlock /// operand. @@ -530,3 +538,9 @@ bool MipsLongBranch::runOnMachineFunction(MachineFunction &F) { return true; } + +/// createMipsLongBranchPass - Returns a pass that converts branches to long +/// branches. +FunctionPass *llvm::createMipsLongBranchPass(MipsTargetMachine &tm) { + return new MipsLongBranch(tm); +} diff --git a/lib/Target/Mips/MipsOptionRecord.h b/lib/Target/Mips/MipsOptionRecord.h index 23f0b7070d6..4708784063d 100644 --- a/lib/Target/Mips/MipsOptionRecord.h +++ b/lib/Target/Mips/MipsOptionRecord.h @@ -1,4 +1,4 @@ -//===-- MipsOptionRecord.h - Abstraction for storing information ----------===// +//===- MipsOptionRecord.h - Abstraction for storing information -*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -23,14 +23,16 @@ #include "MCTargetDesc/MipsMCTargetDesc.h" #include "llvm/MC/MCContext.h" #include "llvm/MC/MCRegisterInfo.h" +#include namespace llvm { + class MipsELFStreamer; -class MCSubtargetInfo; class MipsOptionRecord { public: - virtual ~MipsOptionRecord(){}; + virtual ~MipsOptionRecord() = default; + virtual void EmitMipsOptionRecord() = 0; }; @@ -53,7 +55,8 @@ public: COP2RegClass = &(TRI->getRegClass(Mips::COP2RegClassID)); COP3RegClass = &(TRI->getRegClass(Mips::COP3RegClassID)); } - ~MipsRegInfoRecord() override {} + + ~MipsRegInfoRecord() override = default; void EmitMipsOptionRecord() override; void SetPhysRegUsed(unsigned Reg, const MCRegisterInfo *MCRegInfo); @@ -74,5 +77,7 @@ private: uint32_t ri_cprmask[4]; int64_t ri_gp_value; }; -} // namespace llvm -#endif + +} // end namespace llvm + +#endif // LLVM_LIB_TARGET_MIPS_MIPSOPTIONRECORD_H diff --git a/lib/Target/Mips/MipsSEFrameLowering.cpp b/lib/Target/Mips/MipsSEFrameLowering.cpp index 4996d070eb2..ef8d18c6deb 100644 --- a/lib/Target/Mips/MipsSEFrameLowering.cpp +++ b/lib/Target/Mips/MipsSEFrameLowering.cpp @@ -11,27 +11,42 @@ // //===----------------------------------------------------------------------===// -#include "MipsSEFrameLowering.h" -#include "MCTargetDesc/MipsBaseInfo.h" +#include "MCTargetDesc/MipsABIInfo.h" #include "MipsMachineFunction.h" +#include "MipsRegisterInfo.h" +#include "MipsSEFrameLowering.h" #include "MipsSEInstrInfo.h" #include "MipsSubtarget.h" +#include "llvm/ADT/BitVector.h" +#include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSwitch.h" +#include "llvm/CodeGen/MachineBasicBlock.h" #include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/CodeGen/MachineFunction.h" +#include "llvm/CodeGen/MachineInstr.h" #include "llvm/CodeGen/MachineInstrBuilder.h" #include "llvm/CodeGen/MachineModuleInfo.h" +#include "llvm/CodeGen/MachineOperand.h" #include "llvm/CodeGen/MachineRegisterInfo.h" #include "llvm/CodeGen/RegisterScavenging.h" -#include "llvm/IR/DataLayout.h" +#include "llvm/IR/DebugLoc.h" #include "llvm/IR/Function.h" -#include "llvm/Target/TargetOptions.h" +#include "llvm/MC/MCDwarf.h" +#include "llvm/MC/MCRegisterInfo.h" +#include "llvm/MC/MachineLocation.h" +#include "llvm/Support/CodeGen.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/MathExtras.h" +#include "llvm/Target/TargetInstrInfo.h" +#include "llvm/Target/TargetRegisterInfo.h" +#include "llvm/Target/TargetSubtargetInfo.h" +#include +#include +#include +#include using namespace llvm; -namespace { -typedef MachineBasicBlock::iterator Iter; - static std::pair getMFHiLoOpc(unsigned Src) { if (Mips::ACC64RegClass.contains(Src)) return std::make_pair((unsigned)Mips::PseudoMFHI, @@ -47,6 +62,8 @@ static std::pair getMFHiLoOpc(unsigned Src) { return std::make_pair(0, 0); } +namespace { + /// Helper class to expand pseudos. class ExpandPseudo { public: @@ -54,6 +71,8 @@ public: bool expand(); private: + typedef MachineBasicBlock::iterator Iter; + bool expandInstr(MachineBasicBlock &MBB, Iter I); void expandLoadCCond(MachineBasicBlock &MBB, Iter I); void expandStoreCCond(MachineBasicBlock &MBB, Iter I); @@ -74,7 +93,8 @@ private: const MipsSEInstrInfo &TII; const MipsRegisterInfo &RegInfo; }; -} + +} // end anonymous namespace ExpandPseudo::ExpandPseudo(MachineFunction &MF_) : MF(MF_), MRI(MF.getRegInfo()), @@ -419,7 +439,7 @@ void MipsSEFrameLowering::emitPrologue(MachineFunction &MF, const std::vector &CSI = MFI.getCalleeSavedInfo(); - if (CSI.size()) { + if (!CSI.empty()) { // Find the instruction past the last instruction that saves a callee-saved // register to the stack. for (unsigned i = 0; i < CSI.size(); ++i) @@ -471,7 +491,7 @@ void MipsSEFrameLowering::emitPrologue(MachineFunction &MF, } else { // Reg is either in GPR32 or FGR32. unsigned CFIIndex = MF.addFrameInst(MCCFIInstruction::createOffset( - nullptr, MRI->getDwarfRegNum(Reg, 1), Offset)); + nullptr, MRI->getDwarfRegNum(Reg, true), Offset)); BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION)) .addCFIIndex(CFIIndex); } @@ -534,7 +554,6 @@ void MipsSEFrameLowering::emitPrologue(MachineFunction &MF, void MipsSEFrameLowering::emitInterruptPrologueStub( MachineFunction &MF, MachineBasicBlock &MBB) const { - MipsFunctionInfo *MipsFI = MF.getInfo(); MachineBasicBlock::iterator MBBI = MBB.begin(); DebugLoc DL = MBBI != MBB.end() ? MBBI->getDebugLoc() : DebugLoc(); @@ -722,7 +741,6 @@ void MipsSEFrameLowering::emitEpilogue(MachineFunction &MF, void MipsSEFrameLowering::emitInterruptEpilogueStub( MachineFunction &MF, MachineBasicBlock &MBB) const { - MachineBasicBlock::iterator MBBI = MBB.getLastNonDebugInstr(); MipsFunctionInfo *MipsFI = MF.getInfo(); DebugLoc DL = MBBI != MBB.end() ? MBBI->getDebugLoc() : DebugLoc(); @@ -820,7 +838,6 @@ spillCalleeSavedRegisters(MachineBasicBlock &MBB, bool MipsSEFrameLowering::hasReservedCallFrame(const MachineFunction &MF) const { const MachineFrameInfo &MFI = MF.getFrameInfo(); - // Reserve call frame if the size of the maximum call frame fits into 16-bit // immediate field and there are no variable sized objects on the stack. // Make sure the second register scavenger spill slot can be accessed with one diff --git a/lib/Target/Mips/MipsSEFrameLowering.h b/lib/Target/Mips/MipsSEFrameLowering.h index 63cd3cebc56..bf30deb1905 100644 --- a/lib/Target/Mips/MipsSEFrameLowering.h +++ b/lib/Target/Mips/MipsSEFrameLowering.h @@ -1,4 +1,4 @@ -//===-- MipsSEFrameLowering.h - Mips32/64 frame lowering --------*- C++ -*-===// +//===- MipsSEFrameLowering.h - Mips32/64 frame lowering ---------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -15,6 +15,8 @@ #define LLVM_LIB_TARGET_MIPS_MIPSSEFRAMELOWERING_H #include "MipsFrameLowering.h" +#include "llvm/CodeGen/MachineBasicBlock.h" +#include namespace llvm { @@ -47,6 +49,7 @@ private: void emitInterruptPrologueStub(MachineFunction &MF, MachineBasicBlock &MBB) const; }; -} // End llvm namespace -#endif +} // end namespace llvm + +#endif // LLVM_LIB_TARGET_MIPS_MIPSSEFRAMELOWERING_H diff --git a/lib/Target/Mips/MipsTargetMachine.cpp b/lib/Target/Mips/MipsTargetMachine.cpp index bb48188e3b8..a45a9c4b41c 100644 --- a/lib/Target/Mips/MipsTargetMachine.cpp +++ b/lib/Target/Mips/MipsTargetMachine.cpp @@ -11,27 +11,30 @@ // //===----------------------------------------------------------------------===// -#include "MipsTargetMachine.h" +#include "MCTargetDesc/MipsABIInfo.h" +#include "MCTargetDesc/MipsMCTargetDesc.h" #include "Mips.h" -#include "Mips16FrameLowering.h" #include "Mips16ISelDAGToDAG.h" -#include "Mips16ISelLowering.h" -#include "Mips16InstrInfo.h" -#include "MipsFrameLowering.h" -#include "MipsInstrInfo.h" -#include "MipsSEFrameLowering.h" #include "MipsSEISelDAGToDAG.h" -#include "MipsSEISelLowering.h" -#include "MipsSEInstrInfo.h" +#include "MipsSubtarget.h" #include "MipsTargetObjectFile.h" +#include "MipsTargetMachine.h" +#include "llvm/ADT/Optional.h" +#include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/StringRef.h" #include "llvm/Analysis/TargetTransformInfo.h" +#include "llvm/CodeGen/BasicTTIImpl.h" +#include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/Passes.h" #include "llvm/CodeGen/TargetPassConfig.h" -#include "llvm/IR/LegacyPassManager.h" +#include "llvm/IR/Attributes.h" +#include "llvm/IR/Function.h" +#include "llvm/Support/CodeGen.h" #include "llvm/Support/Debug.h" #include "llvm/Support/TargetRegistry.h" #include "llvm/Support/raw_ostream.h" -#include "llvm/Transforms/Scalar.h" +#include "llvm/Target/TargetOptions.h" +#include using namespace llvm; @@ -48,7 +51,7 @@ extern "C" void LLVMInitializeMipsTarget() { static std::string computeDataLayout(const Triple &TT, StringRef CPU, const TargetOptions &Options, bool isLittle) { - std::string Ret = ""; + std::string Ret; MipsABIInfo ABI = MipsABIInfo::computeTargetABI(TT, CPU, Options.MCOptions); // There are both little and big endian mips. @@ -102,7 +105,7 @@ MipsTargetMachine::MipsTargetMachine(const Target &T, const Triple &TT, : LLVMTargetMachine(T, computeDataLayout(TT, CPU, Options, isLittle), TT, CPU, FS, Options, getEffectiveRelocModel(CM, RM), CM, OL), - isLittle(isLittle), TLOF(make_unique()), + isLittle(isLittle), TLOF(llvm::make_unique()), ABI(MipsABIInfo::computeTargetABI(TT, CPU, Options.MCOptions)), Subtarget(nullptr), DefaultSubtarget(TT, CPU, FS, isLittle, *this), NoMips16Subtarget(TT, CPU, FS.empty() ? "-mips16" : FS.str() + ",-mips16", @@ -113,9 +116,9 @@ MipsTargetMachine::MipsTargetMachine(const Target &T, const Triple &TT, initAsmInfo(); } -MipsTargetMachine::~MipsTargetMachine() {} +MipsTargetMachine::~MipsTargetMachine() = default; -void MipsebTargetMachine::anchor() { } +void MipsebTargetMachine::anchor() {} MipsebTargetMachine::MipsebTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, @@ -125,7 +128,7 @@ MipsebTargetMachine::MipsebTargetMachine(const Target &T, const Triple &TT, CodeGenOpt::Level OL) : MipsTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, false) {} -void MipselTargetMachine::anchor() { } +void MipselTargetMachine::anchor() {} MipselTargetMachine::MipselTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, @@ -182,10 +185,10 @@ void MipsTargetMachine::resetSubtarget(MachineFunction *MF) { Subtarget = const_cast(getSubtargetImpl(*MF->getFunction())); MF->setSubtarget(Subtarget); - return; } namespace { + /// Mips Code Generator Pass Configuration Options. class MipsPassConfig : public TargetPassConfig { public: @@ -209,11 +212,10 @@ public: void addIRPasses() override; bool addInstSelector() override; void addPreEmitPass() override; - void addPreRegAlloc() override; - }; -} // namespace + +} // end anonymous namespace TargetPassConfig *MipsTargetMachine::createPassConfig(PassManagerBase &PM) { return new MipsPassConfig(this, PM); diff --git a/lib/Target/Mips/MipsTargetMachine.h b/lib/Target/Mips/MipsTargetMachine.h index e4cf17e2abd..140d7133f87 100644 --- a/lib/Target/Mips/MipsTargetMachine.h +++ b/lib/Target/Mips/MipsTargetMachine.h @@ -1,4 +1,4 @@ -//===-- MipsTargetMachine.h - Define TargetMachine for Mips -----*- C++ -*-===// +//===- MipsTargetMachine.h - Define TargetMachine for Mips ------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -16,15 +16,14 @@ #include "MCTargetDesc/MipsABIInfo.h" #include "MipsSubtarget.h" -#include "llvm/CodeGen/BasicTTIImpl.h" -#include "llvm/CodeGen/Passes.h" -#include "llvm/CodeGen/SelectionDAGISel.h" -#include "llvm/Target/TargetFrameLowering.h" +#include "llvm/ADT/Optional.h" +#include "llvm/ADT/StringMap.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/CodeGen.h" #include "llvm/Target/TargetMachine.h" +#include namespace llvm { -class formatted_raw_ostream; -class MipsRegisterInfo; class MipsTargetMachine : public LLVMTargetMachine { bool isLittle; @@ -73,6 +72,7 @@ public: /// class MipsebTargetMachine : public MipsTargetMachine { virtual void anchor(); + public: MipsebTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, @@ -84,6 +84,7 @@ public: /// class MipselTargetMachine : public MipsTargetMachine { virtual void anchor(); + public: MipselTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, @@ -91,6 +92,6 @@ public: CodeGenOpt::Level OL); }; -} // End llvm namespace +} // end namespace llvm -#endif +#endif // LLVM_LIB_TARGET_MIPS_MIPSTARGETMACHINE_H