From: Evan Cheng Date: Wed, 18 Jun 2008 02:48:27 +0000 (+0000) Subject: Unbreak DECLARE isel in pic mode. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=fab8387384c6866730147a78347705987b57a14b;p=oota-llvm.git Unbreak DECLARE isel in pic mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52439 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86ISelDAGToDAG.cpp b/lib/Target/X86/X86ISelDAGToDAG.cpp index e0b8e012956..3a4496f0025 100644 --- a/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -1585,10 +1585,14 @@ SDNode *X86DAGToDAGISel::Select(SDOperand N) { SDOperand Chain = Node->getOperand(0); SDOperand N1 = Node->getOperand(1); SDOperand N2 = Node->getOperand(2); - if (isa(N1) && - N2.getOpcode() == X86ISD::Wrapper && + if (!isa(N1)) + break; + int FI = cast(N1)->getIndex(); + if (N2.getOpcode() == ISD::ADD && + N2.getOperand(0).getOpcode() == X86ISD::GlobalBaseReg) + N2 = N2.getOperand(1); + if (N2.getOpcode() == X86ISD::Wrapper && isa(N2.getOperand(0))) { - int FI = cast(N1)->getIndex(); GlobalValue *GV = cast(N2.getOperand(0))->getGlobal(); SDOperand Tmp1 = CurDAG->getTargetFrameIndex(FI, TLI.getPointerTy());