Move DataLayout onto the AArch64 subtarget.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210552 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Christopher 2014-06-10 18:06:23 +00:00
parent 9a7d793fd1
commit fc0f6e8cc5
4 changed files with 15 additions and 11 deletions

View File

@ -36,7 +36,15 @@ AArch64Subtarget::AArch64Subtarget(const std::string &TT,
: AArch64GenSubtargetInfo(TT, CPU, FS), ARMProcFamily(Others), : AArch64GenSubtargetInfo(TT, CPU, FS), ARMProcFamily(Others),
HasFPARMv8(false), HasNEON(false), HasCrypto(false), HasCRC(false), HasFPARMv8(false), HasNEON(false), HasCrypto(false), HasCRC(false),
HasZeroCycleRegMove(false), HasZeroCycleZeroing(false), CPUString(CPU), 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 // Determine default and user-specified characteristics
if (CPUString.empty()) if (CPUString.empty())

View File

@ -16,6 +16,7 @@
#include "AArch64FrameLowering.h" #include "AArch64FrameLowering.h"
#include "AArch64RegisterInfo.h" #include "AArch64RegisterInfo.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/Target/TargetSubtargetInfo.h" #include "llvm/Target/TargetSubtargetInfo.h"
#include <string> #include <string>
@ -53,6 +54,7 @@ protected:
/// IsLittleEndian - Is the target little endian? /// IsLittleEndian - Is the target little endian?
bool IsLittleEndian; bool IsLittleEndian;
const DataLayout DL;
AArch64FrameLowering FrameLowering; AArch64FrameLowering FrameLowering;
public: public:
@ -64,7 +66,7 @@ public:
const AArch64FrameLowering *getFrameLowering() const { const AArch64FrameLowering *getFrameLowering() const {
return &FrameLowering; return &FrameLowering;
} }
const DataLayout *getDataLayout() const { return &DL; }
bool enableMachineScheduler() const override { return true; } bool enableMachineScheduler() const override { return true; }
bool hasZeroCycleRegMove() const { return HasZeroCycleRegMove; } bool hasZeroCycleRegMove() const { return HasZeroCycleRegMove; }

View File

@ -78,13 +78,6 @@ AArch64TargetMachine::AArch64TargetMachine(const Target &T, StringRef TT,
bool LittleEndian) bool LittleEndian)
: LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL), : LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL),
Subtarget(TT, CPU, FS, LittleEndian), 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) { InstrInfo(Subtarget), TLInfo(*this), TSInfo(*this) {
initAsmInfo(); initAsmInfo();
} }

View File

@ -30,7 +30,6 @@ protected:
AArch64Subtarget Subtarget; AArch64Subtarget Subtarget;
private: private:
const DataLayout DL;
AArch64InstrInfo InstrInfo; AArch64InstrInfo InstrInfo;
AArch64TargetLowering TLInfo; AArch64TargetLowering TLInfo;
AArch64SelectionDAGInfo TSInfo; AArch64SelectionDAGInfo TSInfo;
@ -47,7 +46,9 @@ public:
const AArch64TargetLowering *getTargetLowering() const override { const AArch64TargetLowering *getTargetLowering() const override {
return &TLInfo; return &TLInfo;
} }
const DataLayout *getDataLayout() const override { return &DL; } const DataLayout *getDataLayout() const override {
return getSubtargetImpl()->getDataLayout();
}
const AArch64FrameLowering *getFrameLowering() const override { const AArch64FrameLowering *getFrameLowering() const override {
return getSubtargetImpl()->getFrameLowering(); return getSubtargetImpl()->getFrameLowering();
} }