Move ARMJITInfo off of the TargetMachine and down onto the subtarget.
[oota-llvm.git] / lib / Target / ARM / ARMTargetMachine.h
index 8af3a6f0eb2e5cdc29d207ed94e5034e3dc2637b..986789be8ddf840fbc98b4cbecdb92913a3b6a86 100644 (file)
@@ -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<ARMBaseInstrInfo> InstrInfo;
-  const DataLayout    DL;   // Calculates type size & alignment
+  std::unique_ptr<ARMBaseInstrInfo> InstrInfo;
   ARMTargetLowering   TLInfo;
-  ARMSelectionDAGInfo TSInfo;
   // Either Thumb1FrameLowering or ARMFrameLowering.
-  OwningPtr<ARMFrameLowering> FrameLowering;
+  std::unique_ptr<ARMFrameLowering> 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);
 };