X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FHexagon%2FHexagonTargetMachine.h;h=b61f6bc92f7fd56008391c86e6b955ca1103542f;hb=766278ea849cdbe780f543a864c1740429f9f0dc;hp=70bea56cfd947f4fa400da4bb4860383a5b37092;hpb=061efcfb3e79899493d857f49e50d09f29037e0a;p=oota-llvm.git diff --git a/lib/Target/Hexagon/HexagonTargetMachine.h b/lib/Target/Hexagon/HexagonTargetMachine.h index 70bea56cfd9..b61f6bc92f7 100644 --- a/lib/Target/Hexagon/HexagonTargetMachine.h +++ b/lib/Target/Hexagon/HexagonTargetMachine.h @@ -11,68 +11,37 @@ // //===----------------------------------------------------------------------===// -#ifndef HexagonTARGETMACHINE_H -#define HexagonTARGETMACHINE_H +#ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONTARGETMACHINE_H +#define LLVM_LIB_TARGET_HEXAGON_HEXAGONTARGETMACHINE_H -#include "llvm/Target/TargetMachine.h" -#include "llvm/Target/TargetData.h" #include "HexagonInstrInfo.h" #include "HexagonSubtarget.h" -#include "HexagonISelLowering.h" -#include "HexagonSelectionDAGInfo.h" -#include "HexagonFrameLowering.h" +#include "llvm/Target/TargetMachine.h" namespace llvm { class Module; class HexagonTargetMachine : public LLVMTargetMachine { - const TargetData DataLayout; // Calculates type size & alignment. - HexagonSubtarget Subtarget; - HexagonInstrInfo InstrInfo; - HexagonTargetLowering TLInfo; - HexagonSelectionDAGInfo TSInfo; - HexagonFrameLowering FrameLowering; - const InstrItineraryData* InstrItins; + std::unique_ptr TLOF; + mutable StringMap> SubtargetMap; public: - HexagonTargetMachine(const Target &T, StringRef TT,StringRef CPU, - StringRef FS, TargetOptions Options, Reloc::Model RM, - CodeModel::Model CM, CodeGenOpt::Level OL); - - virtual const HexagonInstrInfo *getInstrInfo() const { - return &InstrInfo; - } - virtual const HexagonSubtarget *getSubtargetImpl() const { - return &Subtarget; - } - virtual const HexagonRegisterInfo *getRegisterInfo() const { - return &InstrInfo.getRegisterInfo(); - } - - virtual const InstrItineraryData* getInstrItineraryData() const { - return InstrItins; - } + HexagonTargetMachine(const Target &T, const Triple &TT, StringRef CPU, + StringRef FS, const TargetOptions &Options, + Reloc::Model RM, CodeModel::Model CM, + CodeGenOpt::Level OL); + ~HexagonTargetMachine() override; + const HexagonSubtarget *getSubtargetImpl(const Function &F) const override; + static unsigned getModuleMatchQuality(const Module &M); - virtual const HexagonTargetLowering* getTargetLowering() const { - return &TLInfo; - } - - virtual const HexagonFrameLowering* getFrameLowering() const { - return &FrameLowering; - } + TargetPassConfig *createPassConfig(PassManagerBase &PM) override; + TargetIRAnalysis getTargetIRAnalysis() override; - virtual const HexagonSelectionDAGInfo* getSelectionDAGInfo() const { - return &TSInfo; + TargetLoweringObjectFile *getObjFileLowering() const override { + return TLOF.get(); } - - virtual const TargetData *getTargetData() const { return &DataLayout; } - static unsigned getModuleMatchQuality(const Module &M); - - // Pass Pipeline Configuration. - virtual bool addPassesForOptimizations(PassManagerBase &PM); - virtual TargetPassConfig *createPassConfig(PassManagerBase &PM); }; extern bool flag_aligned_memcpy;