diff options
Diffstat (limited to 'contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.h')
-rw-r--r-- | contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.h | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.h b/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.h index 852cb3f8d2e9..75c65c57905f 100644 --- a/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.h +++ b/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.h @@ -11,8 +11,8 @@ // //===----------------------------------------------------------------------===// -#ifndef AArch64TARGETMACHINE_H -#define AArch64TARGETMACHINE_H +#ifndef LLVM_LIB_TARGET_AARCH64_AARCH64TARGETMACHINE_H +#define LLVM_LIB_TARGET_AARCH64_AARCH64TARGETMACHINE_H #include "AArch64InstrInfo.h" #include "AArch64Subtarget.h" @@ -23,7 +23,9 @@ namespace llvm { class AArch64TargetMachine : public LLVMTargetMachine { protected: + std::unique_ptr<TargetLoweringObjectFile> TLOF; AArch64Subtarget Subtarget; + mutable StringMap<std::unique_ptr<AArch64Subtarget>> SubtargetMap; public: AArch64TargetMachine(const Target &T, StringRef TT, StringRef CPU, @@ -31,33 +33,25 @@ public: Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL, bool IsLittleEndian); + ~AArch64TargetMachine() override; + const AArch64Subtarget *getSubtargetImpl() const override { return &Subtarget; } - const AArch64TargetLowering *getTargetLowering() const override { - return getSubtargetImpl()->getTargetLowering(); - } - const DataLayout *getDataLayout() const override { - return getSubtargetImpl()->getDataLayout(); - } - const AArch64FrameLowering *getFrameLowering() const override { - return getSubtargetImpl()->getFrameLowering(); - } - const AArch64InstrInfo *getInstrInfo() const override { - return getSubtargetImpl()->getInstrInfo(); - } - const AArch64RegisterInfo *getRegisterInfo() const override { - return &getInstrInfo()->getRegisterInfo(); - } - const AArch64SelectionDAGInfo *getSelectionDAGInfo() const override { - return getSubtargetImpl()->getSelectionDAGInfo(); - } + const AArch64Subtarget *getSubtargetImpl(const Function &F) const override; // Pass Pipeline Configuration TargetPassConfig *createPassConfig(PassManagerBase &PM) override; /// \brief Register AArch64 analysis passes with a pass manager. void addAnalysisPasses(PassManagerBase &PM) override; + + TargetLoweringObjectFile* getObjFileLowering() const override { + return TLOF.get(); + } + +private: + bool isLittle; }; // AArch64leTargetMachine - AArch64 little endian target machine. |