From fc0f6e8cc55f5f88421208e0ad3a9058ff0278bc Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Tue, 10 Jun 2014 18:06:23 +0000 Subject: [PATCH] Move DataLayout onto the AArch64 subtarget. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210552 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/AArch64/AArch64Subtarget.cpp | 10 +++++++++- lib/Target/AArch64/AArch64Subtarget.h | 4 +++- lib/Target/AArch64/AArch64TargetMachine.cpp | 7 ------- lib/Target/AArch64/AArch64TargetMachine.h | 5 +++-- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/lib/Target/AArch64/AArch64Subtarget.cpp b/lib/Target/AArch64/AArch64Subtarget.cpp index 714a388cec7..cf6d08f2380 100644 --- a/lib/Target/AArch64/AArch64Subtarget.cpp +++ b/lib/Target/AArch64/AArch64Subtarget.cpp @@ -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()) diff --git a/lib/Target/AArch64/AArch64Subtarget.h b/lib/Target/AArch64/AArch64Subtarget.h index 771bc7b3e7e..117963903bb 100644 --- a/lib/Target/AArch64/AArch64Subtarget.h +++ b/lib/Target/AArch64/AArch64Subtarget.h @@ -16,6 +16,7 @@ #include "AArch64FrameLowering.h" #include "AArch64RegisterInfo.h" +#include "llvm/IR/DataLayout.h" #include "llvm/Target/TargetSubtargetInfo.h" #include @@ -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; } diff --git a/lib/Target/AArch64/AArch64TargetMachine.cpp b/lib/Target/AArch64/AArch64TargetMachine.cpp index 652793eb101..f86f86b7f24 100644 --- a/lib/Target/AArch64/AArch64TargetMachine.cpp +++ b/lib/Target/AArch64/AArch64TargetMachine.cpp @@ -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(); } diff --git a/lib/Target/AArch64/AArch64TargetMachine.h b/lib/Target/AArch64/AArch64TargetMachine.h index d8c9694dd48..e3616e1bb93 100644 --- a/lib/Target/AArch64/AArch64TargetMachine.h +++ b/lib/Target/AArch64/AArch64TargetMachine.h @@ -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(); } -- 2.11.0