diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2007-03-14 22:11:11 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2007-03-14 22:11:11 +0000 |
| commit | a1779b9739bb370e5364e1479e7beca66167d4b3 (patch) | |
| tree | 93fab117b67c0e6c62efca38494d0c22975f575c /llvm/lib | |
| parent | 71face25ef21bcb32d491ab3e1f762ebca7e3247 (diff) | |
| download | bcm5719-llvm-a1779b9739bb370e5364e1479e7beca66167d4b3.tar.gz bcm5719-llvm-a1779b9739bb370e5364e1479e7beca66167d4b3.zip | |
Under X86-64 large code model, do not emit 32-bit pc relative calls.
llvm-svn: 35108
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 8dad16edfe1..3e96985eb23 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -1304,11 +1304,13 @@ X86TargetLowering::LowerX86_64CCCCallTo(SDOperand Op, SelectionDAG &DAG, if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee)) { // We should use extra load for direct calls to dllimported functions in // non-JIT mode. - if (!Subtarget->GVRequiresExtraLoad(G->getGlobal(), - getTargetMachine(), true)) + if (getTargetMachine().getCodeModel() != CodeModel::Large + && !Subtarget->GVRequiresExtraLoad(G->getGlobal(), + getTargetMachine(), true)) Callee = DAG.getTargetGlobalAddress(G->getGlobal(), getPointerTy()); } else if (ExternalSymbolSDNode *S = dyn_cast<ExternalSymbolSDNode>(Callee)) - Callee = DAG.getTargetExternalSymbol(S->getSymbol(), getPointerTy()); + if (getTargetMachine().getCodeModel() != CodeModel::Large) + Callee = DAG.getTargetExternalSymbol(S->getSymbol(), getPointerTy()); // Returns a chain & a flag for retval copy to use. SDVTList NodeTys = DAG.getVTList(MVT::Other, MVT::Flag); |

