diff options
author | Michael Kuperstein <michael.m.kuperstein@intel.com> | 2015-01-08 11:50:58 +0000 |
---|---|---|
committer | Michael Kuperstein <michael.m.kuperstein@intel.com> | 2015-01-08 11:50:58 +0000 |
commit | 46f7d525c3dbb40286459817f077ed38c6eedda8 (patch) | |
tree | 11290872b0b54fe5d8e040e13a247dc60553612f /llvm/lib | |
parent | 8c65e31a5a6bfec4a0540d7af9bfae9d6bbbb184 (diff) | |
download | llvm-46f7d525c3dbb40286459817f077ed38c6eedda8.zip llvm-46f7d525c3dbb40286459817f077ed38c6eedda8.tar.gz llvm-46f7d525c3dbb40286459817f077ed38c6eedda8.tar.bz2 |
[X86] Don't try to generate direct calls to TLS globals
The call lowering assumes that if the callee is a global, we want to emit a direct call.
This is correct for regular globals, but not for TLS ones.
Differential Revision: http://reviews.llvm.org/D6862
llvm-svn: 225438
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 2932147..9555dec 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -3083,10 +3083,11 @@ X86TargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI, // through a register, since the call instruction's 32-bit // pc-relative offset may not be large enough to hold the whole // address. - } else if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee)) { + } else if (Callee->getOpcode() == ISD::GlobalAddress) { // If the callee is a GlobalAddress node (quite common, every direct call // is) turn it into a TargetGlobalAddress node so that legalize doesn't hack // it. + GlobalAddressSDNode* G = cast<GlobalAddressSDNode>(Callee); // We should use extra load for direct calls to dllimported functions in // non-JIT mode. |