diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-03-28 21:40:47 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-03-28 21:40:47 +0000 |
commit | f3e8b0575d9eacc388bd4e1107828e30a15dc2d9 (patch) | |
tree | b20cf582c20d363e47a68641027d8f6897960adb /lib/Target/X86/X86Subtarget.cpp | |
parent | 8a21cb2433bcda50fb0434e5377d6bf54fcf16b7 (diff) | |
download | llvm-f3e8b0575d9eacc388bd4e1107828e30a15dc2d9.tar.gz llvm-f3e8b0575d9eacc388bd4e1107828e30a15dc2d9.tar.bz2 llvm-f3e8b0575d9eacc388bd4e1107828e30a15dc2d9.tar.xz |
X86: Disable IsLegalToCallImmediateAddr for Win32
WinCOFF cannot form PC relative relocations to support absolute
MCValues. We should reenable this once WinCOFF supports emission of
IMAGE_REL_I386_REL32 relocations.
This fixes PR19272.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205058 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86Subtarget.cpp')
-rw-r--r-- | lib/Target/X86/X86Subtarget.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Target/X86/X86Subtarget.cpp b/lib/Target/X86/X86Subtarget.cpp index 16161cfbd8..207d0baa50 100644 --- a/lib/Target/X86/X86Subtarget.cpp +++ b/lib/Target/X86/X86Subtarget.cpp @@ -165,7 +165,10 @@ bool X86Subtarget::hasSinCos() const { /// IsLegalToCallImmediateAddr - Return true if the subtarget allows calls /// to immediate address. bool X86Subtarget::IsLegalToCallImmediateAddr(const TargetMachine &TM) const { - if (In64BitMode) + // FIXME: I386 PE/COFF supports PC relative calls using IMAGE_REL_I386_REL32 + // but WinCOFFObjectWriter::RecordRelocation cannot emit them. Once it does, + // the following check for Win32 should be removed. + if (In64BitMode || isTargetWin32()) return false; return isTargetELF() || TM.getRelocationModel() == Reloc::Static; } |