In the absence of a linker to build the GOT, use the 32-bit
authorDale Johannesen <dalej@apple.com>
Tue, 12 Aug 2008 18:23:48 +0000 (18:23 +0000)
committerDale Johannesen <dalej@apple.com>
Tue, 12 Aug 2008 18:23:48 +0000 (18:23 +0000)
non_lazy_ptr mechanism on x86-64 Darwin JIT.  Fixes a bunch
of last night's failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54692 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86CodeEmitter.cpp

index c0d051fcefe7e97411f849520f9054c8e24ed7ce..8a02ca4b75d223b5e993c63282e916a0dbaac055 100644 (file)
@@ -251,7 +251,9 @@ static bool isDisp8(int Value) {
 }
 
 bool Emitter::gvNeedsLazyPtr(const GlobalValue *GV) {
-  return !Is64BitMode && 
+  // For Darwin, simulate the linktime GOT by using the same lazy-pointer
+  // mechanism as 32-bit mode.
+  return (!Is64BitMode || TM.getSubtarget<X86Subtarget>().isTargetDarwin()) &&
     TM.getSubtarget<X86Subtarget>().GVRequiresExtraLoad(GV, TM, false);
 }