From a8114a0f48889cc6fdda42d3417f3a0fdeef6915 Mon Sep 17 00:00:00 2001 From: Nate Begeman Date: Wed, 30 Mar 2005 02:23:08 +0000 Subject: Fix frame index code to generate legal PowerPC instructions. About half of Shootout now works. llvm-svn: 20940 --- llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp') diff --git a/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp b/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp index 451ff031c6b..afeaac96c7f 100644 --- a/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp +++ b/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp @@ -612,9 +612,8 @@ unsigned ISel::SelectExprFP(SDOperand N, unsigned Result) } if(Address.getOpcode() == ISD::FrameIndex) { - BuildMI(BB, Opc, 2, Result) - .addFrameIndex(cast(Address)->getIndex()) - .addReg(PPC::R1); + Tmp1 = cast(Address)->getIndex(); + addFrameReference(BuildMI(BB, Opc, 2, Result), (int)Tmp1); } else { int offset; SelectAddr(Address, Tmp1, offset); @@ -730,7 +729,7 @@ unsigned ISel::SelectExpr(SDOperand N) { case ISD::FrameIndex: Tmp1 = cast(N)->getIndex(); - addFrameReference(BuildMI(BB, PPC::ADDI, 2, Result), (int)Tmp1); + addFrameReference(BuildMI(BB, PPC::ADDI, 2, Result), (int)Tmp1, 0, false); return Result; case ISD::GlobalAddress: { @@ -782,9 +781,8 @@ unsigned ISel::SelectExpr(SDOperand N) { Tmp3 = 0; // Silence GCC warning. } if(Address.getOpcode() == ISD::FrameIndex) { - BuildMI(BB, Opc, 2, Result) - .addFrameIndex(cast(Address)->getIndex()) - .addReg(PPC::R1); + Tmp1 = cast(Address)->getIndex(); + addFrameReference(BuildMI(BB, Opc, 2, Result), (int)Tmp1); } else { int offset; SelectAddr(Address, Tmp1, offset); @@ -1343,8 +1341,8 @@ void ISel::Select(SDOperand N) { } else if(Address.getOpcode() == ISD::FrameIndex) { - BuildMI(BB, Opc, 2).addReg(Tmp1) - .addFrameIndex(cast(Address)->getIndex()); + Tmp2 = cast(Address)->getIndex(); + addFrameReference(BuildMI(BB, Opc, 3).addReg(Tmp1), (int)Tmp2); } else { -- cgit v1.2.3