diff --git a/llvm/lib/Target/AArch64/AArch64Subtarget.h b/llvm/lib/Target/AArch64/AArch64Subtarget.h --- a/llvm/lib/Target/AArch64/AArch64Subtarget.h +++ b/llvm/lib/Target/AArch64/AArch64Subtarget.h @@ -207,8 +207,6 @@ // CustomCallUsedXRegister[i] - X#i call saved. BitVector CustomCallSavedXRegs; - bool IsLittle; - /// TargetTriple - What processor and OS we're targeting. Triple TargetTriple; @@ -237,8 +235,7 @@ /// This constructor initializes the data members to match that /// of the specified triple. AArch64Subtarget(const Triple &TT, const std::string &CPU, - const std::string &FS, const TargetMachine &TM, - bool LittleEndian); + const std::string &FS, const TargetMachine &TM); const AArch64SelectionDAGInfo *getSelectionDAGInfo() const override { return &TSInfo; @@ -393,7 +390,9 @@ bool hasSVE2SHA3() const { return HasSVE2SHA3; } bool hasSVE2BitPerm() const { return HasSVE2BitPerm; } - bool isLittleEndian() const { return IsLittle; } + bool isLittleEndian() const { + return TargetTriple.getArch() == Triple::aarch64; + } bool isTargetDarwin() const { return TargetTriple.isOSDarwin(); } bool isTargetIOS() const { return TargetTriple.isiOS(); } diff --git a/llvm/lib/Target/AArch64/AArch64Subtarget.cpp b/llvm/lib/Target/AArch64/AArch64Subtarget.cpp --- a/llvm/lib/Target/AArch64/AArch64Subtarget.cpp +++ b/llvm/lib/Target/AArch64/AArch64Subtarget.cpp @@ -163,11 +163,10 @@ AArch64Subtarget::AArch64Subtarget(const Triple &TT, const std::string &CPU, const std::string &FS, - const TargetMachine &TM, bool LittleEndian) + const TargetMachine &TM) : AArch64GenSubtargetInfo(TT, CPU, FS), ReserveXRegister(AArch64::GPR64commonRegClass.getNumRegs()), CustomCallSavedXRegs(AArch64::GPR64commonRegClass.getNumRegs()), - IsLittle(LittleEndian), TargetTriple(TT), FrameLowering(), InstrInfo(initializeSubtargetDependencies(FS, CPU)), TSInfo(), TLInfo(TM, *this) { diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.h b/llvm/lib/Target/AArch64/AArch64TargetMachine.h --- a/llvm/lib/Target/AArch64/AArch64TargetMachine.h +++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.h @@ -31,7 +31,7 @@ AArch64TargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Optional RM, Optional CM, - CodeGenOpt::Level OL, bool JIT, bool IsLittleEndian); + CodeGenOpt::Level OL, bool JIT); ~AArch64TargetMachine() override; const AArch64Subtarget *getSubtargetImpl(const Function &F) const override; @@ -48,33 +48,6 @@ TargetLoweringObjectFile* getObjFileLowering() const override { return TLOF.get(); } - -private: - bool isLittle; -}; - -// AArch64 little endian target machine. -// -class AArch64leTargetMachine : public AArch64TargetMachine { - virtual void anchor(); -public: - AArch64leTargetMachine(const Target &T, const Triple &TT, StringRef CPU, - StringRef FS, const TargetOptions &Options, - Optional RM, - Optional CM, CodeGenOpt::Level OL, - bool JIT); -}; - -// AArch64 big endian target machine. -// -class AArch64beTargetMachine : public AArch64TargetMachine { - virtual void anchor(); -public: - AArch64beTargetMachine(const Target &T, const Triple &TT, StringRef CPU, - StringRef FS, const TargetOptions &Options, - Optional RM, - Optional CM, CodeGenOpt::Level OL, - bool JIT); }; } // end namespace llvm diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp --- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp +++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp @@ -154,9 +154,9 @@ extern "C" void LLVMInitializeAArch64Target() { // Register the target. - RegisterTargetMachine X(getTheAArch64leTarget()); - RegisterTargetMachine Y(getTheAArch64beTarget()); - RegisterTargetMachine Z(getTheARM64Target()); + RegisterTargetMachine X(getTheAArch64leTarget()); + RegisterTargetMachine Y(getTheAArch64beTarget()); + RegisterTargetMachine Z(getTheARM64Target()); auto PR = PassRegistry::getPassRegistry(); initializeGlobalISel(*PR); initializeAArch64A53Fix835769Pass(*PR); @@ -196,15 +196,14 @@ // Helper function to build a DataLayout string static std::string computeDataLayout(const Triple &TT, - const MCTargetOptions &Options, - bool LittleEndian) { + const MCTargetOptions &Options) { if (Options.getABIName() == "ilp32") return "e-m:e-p:32:32-i8:8-i16:16-i64:64-S128"; if (TT.isOSBinFormatMachO()) return "e-m:o-i64:64-i128:128-n32:64-S128"; if (TT.isOSBinFormatCOFF()) return "e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128"; - if (LittleEndian) + if (TT.getArch() != Triple::aarch64_be) return "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"; return "E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"; } @@ -253,13 +252,11 @@ const TargetOptions &Options, Optional RM, Optional CM, - CodeGenOpt::Level OL, bool JIT, - bool LittleEndian) - : LLVMTargetMachine(T, - computeDataLayout(TT, Options.MCOptions, LittleEndian), - TT, CPU, FS, Options, getEffectiveRelocModel(TT, RM), + CodeGenOpt::Level OL, bool JIT) + : LLVMTargetMachine(T, computeDataLayout(TT, Options.MCOptions), TT, CPU, + FS, Options, getEffectiveRelocModel(TT, RM), getEffectiveAArch64CodeModel(TT, CM, JIT), OL), - TLOF(createTLOF(getTargetTriple())), isLittle(LittleEndian) { + TLOF(createTLOF(getTargetTriple())) { initAsmInfo(); if (TT.isOSBinFormatMachO()) { @@ -310,28 +307,11 @@ // creation will depend on the TM and the code generation flags on the // function that reside in TargetOptions. resetTargetOptions(F); - I = llvm::make_unique(TargetTriple, CPU, FS, *this, - isLittle); + I = llvm::make_unique(TargetTriple, CPU, FS, *this); } return I.get(); } -void AArch64leTargetMachine::anchor() { } - -AArch64leTargetMachine::AArch64leTargetMachine( - const Target &T, const Triple &TT, StringRef CPU, StringRef FS, - const TargetOptions &Options, Optional RM, - Optional CM, CodeGenOpt::Level OL, bool JIT) - : AArch64TargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, JIT, true) {} - -void AArch64beTargetMachine::anchor() { } - -AArch64beTargetMachine::AArch64beTargetMachine( - const Target &T, const Triple &TT, StringRef CPU, StringRef FS, - const TargetOptions &Options, Optional RM, - Optional CM, CodeGenOpt::Level OL, bool JIT) - : AArch64TargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, JIT, false) {} - namespace { /// AArch64 Code Generator Pass Configuration Options. diff --git a/llvm/unittests/Target/AArch64/InstSizes.cpp b/llvm/unittests/Target/AArch64/InstSizes.cpp --- a/llvm/unittests/Target/AArch64/InstSizes.cpp +++ b/llvm/unittests/Target/AArch64/InstSizes.cpp @@ -29,7 +29,7 @@ std::unique_ptr createInstrInfo(TargetMachine *TM) { AArch64Subtarget ST(TM->getTargetTriple(), TM->getTargetCPU(), - TM->getTargetFeatureString(), *TM, /* isLittle */ false); + TM->getTargetFeatureString(), *TM); return llvm::make_unique(ST); }