Move DataLayout onto the AArch64 subtarget.
authorEric Christopher <echristo@gmail.com>
Tue, 10 Jun 2014 18:06:23 +0000 (18:06 +0000)
committerEric Christopher <echristo@gmail.com>
Tue, 10 Jun 2014 18:06:23 +0000 (18:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210552 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 714a388cec73d7e107c940f4665dea4cad10b681..cf6d08f23805960910f7e8b01932de6f1053dcc1 100644 (file)
@@ -36,7 +36,15 @@ 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), FrameLowering() {
+      TargetTriple(TT), IsLittleEndian(LittleEndian),
+      // This nested ternary is horrible, but DL needs to be properly
+      // initialized
+      // before TLInfo is constructed.
+      DL(isTargetMachO()
+             ? "e-m:o-i64:64-i128:128-n32:64-S128"
+             : (IsLittleEndian ? "e-m:e-i64:64-i128:128-n32:64-S128"
+                               : "E-m:e-i64:64-i128:128-n32:64-S128")),
+      FrameLowering() {
   // Determine default and user-specified characteristics
 
   if (CPUString.empty())
index 771bc7b3e7e243a0a8ccc41ca1dee03ca4ed78ff..117963903bb7744fb6f8c56e43f26493419d723e 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "AArch64FrameLowering.h"
 #include "AArch64RegisterInfo.h"
+#include "llvm/IR/DataLayout.h"
 #include "llvm/Target/TargetSubtargetInfo.h"
 #include <string>
 
@@ -53,6 +54,7 @@ protected:
   /// IsLittleEndian - Is the target little endian?
   bool IsLittleEndian;
 
+  const DataLayout DL;
   AArch64FrameLowering FrameLowering;
 
 public:
@@ -64,7 +66,7 @@ public:
   const AArch64FrameLowering *getFrameLowering() const {
     return &FrameLowering;
   }
-
+  const DataLayout *getDataLayout() const { return &DL; }
   bool enableMachineScheduler() const override { return true; }
 
   bool hasZeroCycleRegMove() const { return HasZeroCycleRegMove; }
index 652793eb1010b608e8bff751d3aab7edcc8cb22e..f86f86b7f241bcb9067f1e110c0200eb59483c31 100644 (file)
@@ -78,13 +78,6 @@ AArch64TargetMachine::AArch64TargetMachine(const Target &T, StringRef TT,
                                            bool LittleEndian)
     : LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL),
       Subtarget(TT, CPU, FS, LittleEndian),
-      // This nested ternary is horrible, but DL needs to be properly
-      // initialized
-      // before TLInfo is constructed.
-      DL(Subtarget.isTargetMachO()
-             ? "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), TSInfo(*this) {
   initAsmInfo();
 }
index d8c9694dd48847cddd1a40efd03fadb25e2df4d3..e3616e1bb9307f4786ba3837337a0e9b57cf9333 100644 (file)
@@ -30,7 +30,6 @@ protected:
   AArch64Subtarget Subtarget;
 
 private:
-  const DataLayout DL;
   AArch64InstrInfo InstrInfo;
   AArch64TargetLowering TLInfo;
   AArch64SelectionDAGInfo TSInfo;
@@ -47,7 +46,9 @@ public:
   const AArch64TargetLowering *getTargetLowering() const override {
     return &TLInfo;
   }
-  const DataLayout *getDataLayout() const override { return &DL; }
+  const DataLayout *getDataLayout() const override {
+    return getSubtargetImpl()->getDataLayout();
+  }
   const AArch64FrameLowering *getFrameLowering() const override {
     return getSubtargetImpl()->getFrameLowering();
   }