[llvm-commits] [llvm] r54215 - /llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp
Bruno Cardoso Lopes
bruno.cardoso at gmail.com
Wed Jul 30 10:06:13 PDT 2008
Author: bruno
Date: Wed Jul 30 12:06:13 2008
New Revision: 54215
URL: http://llvm.org/viewvc/llvm-project?rev=54215&view=rev
Log:
Fixed bug in global address lowering for functions and in Brcond lowering
Modified:
llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp
Modified: llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp?rev=54215&r1=54214&r2=54215&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp Wed Jul 30 12:06:13 2008
@@ -352,12 +352,14 @@
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<ConstantSDNode>(CCNode)->getValue();
@@ -431,11 +433,10 @@
SDValue GA = DAG.getTargetGlobalAddress(GV, MVT::i32);
if (!Subtarget->hasABICall()) {
- if (isa<Function>(GV)) return GA;
const MVT *VTs = DAG.getNodeValueTypes(MVT::i32);
SDValue Ops[] = { GA };
-
- if (IsGlobalInSmallSection(GV)) { // %gp_rel relocation
+ // %gp_rel relocation
+ if (!isa<Function>(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);
More information about the llvm-commits
mailing list