diff options
author | Nate Begeman <natebegeman@mac.com> | 2005-03-30 02:23:08 +0000 |
---|---|---|
committer | Nate Begeman <natebegeman@mac.com> | 2005-03-30 02:23:08 +0000 |
commit | 58f718cd97b0b2e267d60c520a00431f29408417 (patch) | |
tree | 462afcddc8429f24e1d7c18fc44ee5ddfef9b5c3 /lib/Target/PowerPC/PPCISelPattern.cpp | |
parent | 01d05266f9efcbd011f3ef1d19d4b78bc395b0c1 (diff) |
Fix frame index code to generate legal PowerPC instructions. About half of
Shootout now works.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20940 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC/PPCISelPattern.cpp')
-rw-r--r-- | lib/Target/PowerPC/PPCISelPattern.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/lib/Target/PowerPC/PPCISelPattern.cpp b/lib/Target/PowerPC/PPCISelPattern.cpp index 451ff031c6..afeaac96c7 100644 --- a/lib/Target/PowerPC/PPCISelPattern.cpp +++ b/lib/Target/PowerPC/PPCISelPattern.cpp @@ -612,9 +612,8 @@ unsigned ISel::SelectExprFP(SDOperand N, unsigned Result) } if(Address.getOpcode() == ISD::FrameIndex) { - BuildMI(BB, Opc, 2, Result) - .addFrameIndex(cast<FrameIndexSDNode>(Address)->getIndex()) - .addReg(PPC::R1); + Tmp1 = cast<FrameIndexSDNode>(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<FrameIndexSDNode>(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<FrameIndexSDNode>(Address)->getIndex()) - .addReg(PPC::R1); + Tmp1 = cast<FrameIndexSDNode>(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<FrameIndexSDNode>(Address)->getIndex()); + Tmp2 = cast<FrameIndexSDNode>(Address)->getIndex(); + addFrameReference(BuildMI(BB, Opc, 3).addReg(Tmp1), (int)Tmp2); } else { |