X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=lib%2FTarget%2FARM%2FARMTargetMachine.h;h=986789be8ddf840fbc98b4cbecdb92913a3b6a86;hp=8af3a6f0eb2e5cdc29d207ed94e5034e3dc2637b;hb=58c99da4d89b0f6b5be6066d2888b0ddc41c8a7c;hpb=1f072c36d0e248d69932a830b698458f032c644d diff --git a/lib/Target/ARM/ARMTargetMachine.h b/lib/Target/ARM/ARMTargetMachine.h index 8af3a6f0eb2..986789be8dd 100644 --- a/lib/Target/ARM/ARMTargetMachine.h +++ b/lib/Target/ARM/ARMTargetMachine.h @@ -23,7 +23,6 @@ #include "Thumb1FrameLowering.h" #include "Thumb1InstrInfo.h" #include "Thumb2InstrInfo.h" -#include "llvm/ADT/OwningPtr.h" #include "llvm/IR/DataLayout.h" #include "llvm/MC/MCStreamer.h" #include "llvm/Target/TargetMachine.h" @@ -34,7 +33,6 @@ class ARMBaseTargetMachine : public LLVMTargetMachine { protected: ARMSubtarget Subtarget; private: - ARMJITInfo JITInfo; InstrItineraryData InstrItins; public: @@ -45,7 +43,6 @@ public: CodeGenOpt::Level OL, bool isLittle); - ARMJITInfo *getJITInfo() override { return &JITInfo; } const ARMSubtarget *getSubtargetImpl() const override { return &Subtarget; } const ARMTargetLowering *getTargetLowering() const override { // Implemented by derived classes @@ -69,9 +66,7 @@ public: class ARMTargetMachine : public ARMBaseTargetMachine { virtual void anchor(); ARMInstrInfo InstrInfo; - const DataLayout DL; // Calculates type size & alignment ARMTargetLowering TLInfo; - ARMSelectionDAGInfo TSInfo; ARMFrameLowering FrameLowering; public: ARMTargetMachine(const Target &T, StringRef TT, @@ -90,32 +85,34 @@ class ARMTargetMachine : public ARMBaseTargetMachine { } const ARMSelectionDAGInfo *getSelectionDAGInfo() const override { - return &TSInfo; + return getSubtargetImpl()->getSelectionDAGInfo(); } const ARMFrameLowering *getFrameLowering() const override { return &FrameLowering; } const ARMInstrInfo *getInstrInfo() const override { return &InstrInfo; } - const DataLayout *getDataLayout() const override { return &DL; } + const DataLayout *getDataLayout() const override { + return getSubtargetImpl()->getDataLayout(); + } }; -/// ARMleTargetMachine - ARM little endian target machine. +/// ARMLETargetMachine - ARM little endian target machine. /// -class ARMleTargetMachine : public ARMTargetMachine { - virtual void anchor(); +class ARMLETargetMachine : public ARMTargetMachine { + void anchor() override; public: - ARMleTargetMachine(const Target &T, StringRef TT, + ARMLETargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL); }; -/// ARMbeTargetMachine - ARM big endian target machine. +/// ARMBETargetMachine - ARM big endian target machine. /// -class ARMbeTargetMachine : public ARMTargetMachine { - virtual void anchor(); +class ARMBETargetMachine : public ARMTargetMachine { + void anchor() override; public: - ARMbeTargetMachine(const Target &T, StringRef TT, + ARMBETargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL); @@ -128,12 +125,10 @@ public: class ThumbTargetMachine : public ARMBaseTargetMachine { virtual void anchor(); // Either Thumb1InstrInfo or Thumb2InstrInfo. - OwningPtr InstrInfo; - const DataLayout DL; // Calculates type size & alignment + std::unique_ptr InstrInfo; ARMTargetLowering TLInfo; - ARMSelectionDAGInfo TSInfo; // Either Thumb1FrameLowering or ARMFrameLowering. - OwningPtr FrameLowering; + std::unique_ptr FrameLowering; public: ThumbTargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, @@ -152,7 +147,7 @@ public: } const ARMSelectionDAGInfo *getSelectionDAGInfo() const override { - return &TSInfo; + return getSubtargetImpl()->getSelectionDAGInfo(); } /// returns either Thumb1InstrInfo or Thumb2InstrInfo @@ -163,27 +158,29 @@ public: const ARMFrameLowering *getFrameLowering() const override { return FrameLowering.get(); } - const DataLayout *getDataLayout() const override { return &DL; } + const DataLayout *getDataLayout() const override { + return getSubtargetImpl()->getDataLayout(); + } }; -/// ThumbleTargetMachine - Thumb little endian target machine. +/// ThumbLETargetMachine - Thumb little endian target machine. /// -class ThumbleTargetMachine : public ThumbTargetMachine { - virtual void anchor(); +class ThumbLETargetMachine : public ThumbTargetMachine { + void anchor() override; public: - ThumbleTargetMachine(const Target &T, StringRef TT, + ThumbLETargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL); }; -/// ThumbbeTargetMachine - Thumb big endian target machine. +/// ThumbBETargetMachine - Thumb big endian target machine. /// -class ThumbbeTargetMachine : public ThumbTargetMachine { - virtual void anchor(); +class ThumbBETargetMachine : public ThumbTargetMachine { + void anchor() override; public: - ThumbbeTargetMachine(const Target &T, StringRef TT, - StringRef CPU, StringRef FS, const TargetOptions &Options, + ThumbBETargetMachine(const Target &T, StringRef TT, StringRef CPU, + StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL); };