Darwin API issue: indirect load of external and weak symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24775 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2005-12-17 09:13:43 +00:00
parent 7b0902dcf8
commit bdce7b4090

View File

@ -179,11 +179,16 @@ bool X86DAGToDAGISel::MatchAddress(SDOperand N, X86ISelAddressMode &AM) {
// not the GV offset field.
if (Subtarget->getIndirectExternAndWeakGlobals() &&
(GV->hasWeakLinkage() || GV->isExternal())) {
break;
AM.Base.Reg =
CurDAG->getTargetNode(X86::MOV32rm, MVT::i32, MVT::Other,
CurDAG->getRegister(0, MVT::i32),
getI8Imm(1), CurDAG->getRegister(0, MVT::i32),
CurDAG->getTargetGlobalAddress(GV, MVT::i32),
CurDAG->getEntryNode());
} else {
AM.GV = GV;
return false;
}
return false;
}
break;