[llvm-commits] CVS: llvm/lib/Target/X86/X86ISelLowering.cpp

Evan Cheng evan.cheng at apple.com
Wed Mar 14 15:11:28 PDT 2007



Changes in directory llvm/lib/Target/X86:

X86ISelLowering.cpp updated: 1.368 -> 1.369
---
Log message:

Under X86-64 large code model, do not emit 32-bit pc relative calls.

---
Diffs of the changes:  (+5 -3)

 X86ISelLowering.cpp |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)


Index: llvm/lib/Target/X86/X86ISelLowering.cpp
diff -u llvm/lib/Target/X86/X86ISelLowering.cpp:1.368 llvm/lib/Target/X86/X86ISelLowering.cpp:1.369
--- llvm/lib/Target/X86/X86ISelLowering.cpp:1.368	Mon Mar 12 18:28:50 2007
+++ llvm/lib/Target/X86/X86ISelLowering.cpp	Wed Mar 14 17:11:11 2007
@@ -1304,11 +1304,13 @@
   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);






More information about the llvm-commits mailing list