diff options
Diffstat (limited to 'lib/Target/X86')
-rw-r--r-- | lib/Target/X86/X86Subtarget.h | 5 | ||||
-rw-r--r-- | lib/Target/X86/X86TargetMachine.cpp | 6 |
2 files changed, 6 insertions, 5 deletions
diff --git a/lib/Target/X86/X86Subtarget.h b/lib/Target/X86/X86Subtarget.h index 6240dc2..772f143 100644 --- a/lib/Target/X86/X86Subtarget.h +++ b/lib/Target/X86/X86Subtarget.h @@ -143,6 +143,11 @@ public: TargetType == isCygwin); } bool isTargetCygwin() const { return TargetType == isCygwin; } + std::string getDataLayout() const { return + is64Bit() ? std::string("e-p:64:64-f64:32:64-i64:32:64-f80:128:128") : + isTargetDarwin() ? std::string("e-p:32:32-f64:32:64-i64:32:64-f80:128:128") : + std::string("e-p:32:32-f64:32:64-i64:32:64-f80:32:32"); } + bool isPICStyleSet() const { return PICStyle != PICStyle::None; } bool isPICStyleGOT() const { return PICStyle == PICStyle::GOT; } bool isPICStyleStub() const { return PICStyle == PICStyle::Stub; } diff --git a/lib/Target/X86/X86TargetMachine.cpp b/lib/Target/X86/X86TargetMachine.cpp index c754a1d..f87640f 100644 --- a/lib/Target/X86/X86TargetMachine.cpp +++ b/lib/Target/X86/X86TargetMachine.cpp @@ -114,11 +114,7 @@ X86_64TargetMachine::X86_64TargetMachine(const Module &M, const std::string &FS) X86TargetMachine::X86TargetMachine(const Module &M, const std::string &FS, bool is64Bit) : Subtarget(M, FS, is64Bit), - DataLayout(Subtarget.is64Bit() ? - std::string("e-p:64:64-f64:32:64-i64:32:64-f80:128:128") : - Subtarget.isTargetDarwin() ? - std::string("e-p:32:32-f64:32:64-i64:32:64-f80:128:128") : - std::string("e-p:32:32-f64:32:64-i64:32:64-f80:32:32")), + DataLayout(Subtarget.getDataLayout()), FrameInfo(TargetFrameInfo::StackGrowsDown, Subtarget.getStackAlignment(), Subtarget.is64Bit() ? -8 : -4), InstrInfo(*this), JITInfo(*this), TLInfo(*this) { |