Darwin ABI issues: weak, linkonce, etc. dynamic-no-pic support is complete.
Also fixed a function stub bug. Added weak and linkonce support for
x86 Linux.
llvm-svn: 26038
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index def4f57..1c6a8b3 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -1876,11 +1876,13 @@
// the GlobalAddress must be in the base or index register of the address,
// not the GV offset field.
if (getTargetMachine().
- getSubtarget<X86Subtarget>().getIndirectExternAndWeakGlobals() &&
- (GV->hasWeakLinkage() || GV->isExternal()))
- Result = DAG.getLoad(MVT::i32, DAG.getEntryNode(),
- DAG.getTargetGlobalAddress(GV, getPointerTy()),
- DAG.getSrcValue(NULL));
+ getSubtarget<X86Subtarget>().getIndirectExternAndWeakGlobals()) {
+ if (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage() ||
+ (GV->isExternal() && !GV->hasNotBeenReadFromBytecode()))
+ Result = DAG.getLoad(MVT::i32, DAG.getEntryNode(),
+ DAG.getTargetGlobalAddress(GV, getPointerTy()),
+ DAG.getSrcValue(NULL));
+ }
return Result;
}
case ISD::VASTART: {