diff --git a/lib/Target/X86/X86Subtarget.h b/lib/Target/X86/X86Subtarget.h index 6240dc2715a..772f1431c92 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 c754a1d9da4..f87640f224b 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) {