From: Bruno Cardoso Lopes Date: Wed, 30 Jul 2008 17:06:13 +0000 (+0000) Subject: Fixed bug in global address lowering for functions and in Brcond lowering X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=4b877ca1c5f13f19c9b7c8142a4f7a23383b8b6a;p=oota-llvm.git Fixed bug in global address lowering for functions and in Brcond lowering git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54215 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Mips/MipsISelLowering.cpp b/lib/Target/Mips/MipsISelLowering.cpp index a727c770682..29dc7a32acb 100644 --- a/lib/Target/Mips/MipsISelLowering.cpp +++ b/lib/Target/Mips/MipsISelLowering.cpp @@ -352,12 +352,14 @@ LowerBRCOND(SDValue Op, SelectionDAG &DAG) SDValue Dest = Op.getOperand(2); SDValue CondRes; - if (Op.getOperand(1).getOpcode() == ISD::AND) + if (Op.getOperand(1).getOpcode() == ISD::AND) { CondRes = Op.getOperand(1).getOperand(0); - else if (Op.getOperand(1).getOpcode() == MipsISD::FPCmp) + if (CondRes.getOpcode() != MipsISD::FPCmp) + return Op; + } else if (Op.getOperand(1).getOpcode() == MipsISD::FPCmp) CondRes = Op.getOperand(1); else - assert(0 && "Incoming condition flag unknown"); + return Op; SDValue CCNode = CondRes.getOperand(2); Mips::CondCode CC = (Mips::CondCode)cast(CCNode)->getValue(); @@ -431,11 +433,10 @@ LowerGlobalAddress(SDValue Op, SelectionDAG &DAG) SDValue GA = DAG.getTargetGlobalAddress(GV, MVT::i32); if (!Subtarget->hasABICall()) { - if (isa(GV)) return GA; const MVT *VTs = DAG.getNodeValueTypes(MVT::i32); SDValue Ops[] = { GA }; - - if (IsGlobalInSmallSection(GV)) { // %gp_rel relocation + // %gp_rel relocation + if (!isa(GV) && IsGlobalInSmallSection(GV)) { SDValue GPRelNode = DAG.getNode(MipsISD::GPRel, VTs, 1, Ops, 1); SDValue GOT = DAG.getNode(ISD::GLOBAL_OFFSET_TABLE, MVT::i32); return DAG.getNode(ISD::ADD, MVT::i32, GOT, GPRelNode);