summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2014-06-10 18:06:23 +0000
committerEric Christopher <echristo@gmail.com>2014-06-10 18:06:23 +0000
commit6f2a203f2427e794233010f19bcf48ceb442c9db (patch)
tree76462036f1f91976ec9ebc4055f3326480d54449 /llvm/lib/Target
parenta40ccf620bdeaea2ac63d3c9f6d238f2ee62eb9d (diff)
downloadbcm5719-llvm-6f2a203f2427e794233010f19bcf48ceb442c9db.tar.gz
bcm5719-llvm-6f2a203f2427e794233010f19bcf48ceb442c9db.zip
Move DataLayout onto the AArch64 subtarget.
llvm-svn: 210552
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/AArch64/AArch64Subtarget.cpp10
-rw-r--r--llvm/lib/Target/AArch64/AArch64Subtarget.h4
-rw-r--r--llvm/lib/Target/AArch64/AArch64TargetMachine.cpp7
-rw-r--r--llvm/lib/Target/AArch64/AArch64TargetMachine.h5
4 files changed, 15 insertions, 11 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64Subtarget.cpp b/llvm/lib/Target/AArch64/AArch64Subtarget.cpp
index 714a388cec7..cf6d08f2380 100644
--- a/llvm/lib/Target/AArch64/AArch64Subtarget.cpp
+++ b/llvm/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/llvm/lib/Target/AArch64/AArch64Subtarget.h b/llvm/lib/Target/AArch64/AArch64Subtarget.h
index 771bc7b3e7e..117963903bb 100644
--- a/llvm/lib/Target/AArch64/AArch64Subtarget.h
+++ b/llvm/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 <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; }
diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
index 652793eb101..f86f86b7f24 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
+++ b/llvm/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/llvm/lib/Target/AArch64/AArch64TargetMachine.h b/llvm/lib/Target/AArch64/AArch64TargetMachine.h
index d8c9694dd48..e3616e1bb93 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetMachine.h
+++ b/llvm/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();
}
OpenPOWER on IntegriCloud