Move AArch64FrameLowering into the subtarget.
authorEric Christopher <echristo@gmail.com>
Tue, 10 Jun 2014 17:44:12 +0000 (17:44 +0000)
committerEric Christopher <echristo@gmail.com>
Tue, 10 Jun 2014 17:44:12 +0000 (17:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210549 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/AArch64/AArch64Subtarget.cpp
lib/Target/AArch64/AArch64Subtarget.h
lib/Target/AArch64/AArch64TargetMachine.cpp
lib/Target/AArch64/AArch64TargetMachine.h

index cd69994620daae10e3387e1ae8c19664b65480d7..714a388cec73d7e107c940f4665dea4cad10b681 100644 (file)
@@ -36,7 +36,7 @@ AArch64Subtarget::AArch64Subtarget(const std::string &TT,
     : AArch64GenSubtargetInfo(TT, CPU, FS), ARMProcFamily(Others),
       HasFPARMv8(false), HasNEON(false), HasCrypto(false), HasCRC(false),
       HasZeroCycleRegMove(false), HasZeroCycleZeroing(false), CPUString(CPU),
-      TargetTriple(TT), IsLittleEndian(LittleEndian) {
+      TargetTriple(TT), IsLittleEndian(LittleEndian), FrameLowering() {
   // Determine default and user-specified characteristics
 
   if (CPUString.empty())
index 590ea0580ea743c3e48423989cde3ab494556b80..771bc7b3e7e243a0a8ccc41ca1dee03ca4ed78ff 100644 (file)
@@ -14,8 +14,9 @@
 #ifndef AArch64SUBTARGET_H
 #define AArch64SUBTARGET_H
 
-#include "llvm/Target/TargetSubtargetInfo.h"
+#include "AArch64FrameLowering.h"
 #include "AArch64RegisterInfo.h"
+#include "llvm/Target/TargetSubtargetInfo.h"
 #include <string>
 
 #define GET_SUBTARGETINFO_HEADER
@@ -52,12 +53,18 @@ protected:
   /// IsLittleEndian - Is the target little endian?
   bool IsLittleEndian;
 
+  AArch64FrameLowering FrameLowering;
+
 public:
   /// This constructor initializes the data members to match that
   /// of the specified triple.
   AArch64Subtarget(const std::string &TT, const std::string &CPU,
                  const std::string &FS, bool LittleEndian);
 
+  const AArch64FrameLowering *getFrameLowering() const {
+    return &FrameLowering;
+  }
+
   bool enableMachineScheduler() const override { return true; }
 
   bool hasZeroCycleRegMove() const { return HasZeroCycleRegMove; }
index 86e0fb63b63ff6ec98fb2f46a3e00ef6ad737fa0..652793eb1010b608e8bff751d3aab7edcc8cb22e 100644 (file)
@@ -85,7 +85,7 @@ AArch64TargetMachine::AArch64TargetMachine(const Target &T, StringRef TT,
              ? "e-m:o-i64:64-i128:128-n32:64-S128"
              : (LittleEndian ? "e-m:e-i64:64-i128:128-n32:64-S128"
                              : "E-m:e-i64:64-i128:128-n32:64-S128")),
-      InstrInfo(Subtarget), TLInfo(*this), FrameLowering(), TSInfo(*this) {
+      InstrInfo(Subtarget), TLInfo(*this), TSInfo(*this) {
   initAsmInfo();
 }
 
index 079b19b23bb551bac0212b3b6f2e448749db470d..d8c9694dd48847cddd1a40efd03fadb25e2df4d3 100644 (file)
@@ -33,7 +33,6 @@ private:
   const DataLayout DL;
   AArch64InstrInfo InstrInfo;
   AArch64TargetLowering TLInfo;
-  AArch64FrameLowering FrameLowering;
   AArch64SelectionDAGInfo TSInfo;
 
 public:
@@ -50,7 +49,7 @@ public:
   }
   const DataLayout *getDataLayout() const override { return &DL; }
   const AArch64FrameLowering *getFrameLowering() const override {
-    return &FrameLowering;
+    return getSubtargetImpl()->getFrameLowering();
   }
   const AArch64InstrInfo *getInstrInfo() const override { return &InstrInfo; }
   const AArch64RegisterInfo *getRegisterInfo() const override {