diff options
author | Misha Brukman <brukman+llvm@gmail.com> | 2004-07-09 15:37:16 +0000 |
---|---|---|
committer | Misha Brukman <brukman+llvm@gmail.com> | 2004-07-09 15:37:16 +0000 |
commit | c1ef127ae2326d0565163169d361b4b9e145d828 (patch) | |
tree | 7577a23fdf7a35a93afcc02e23be1ef0c34928e4 | |
parent | ce22e76996d3ff0930716fa60c29df60a7e0481b (diff) |
Read/write the offset value for stack-relative loads via correct instr operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14722 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/PowerPC/PowerPCRegisterInfo.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/Target/PowerPC/PowerPCRegisterInfo.cpp b/lib/Target/PowerPC/PowerPCRegisterInfo.cpp index 67759ef48b..148196e8db 100644 --- a/lib/Target/PowerPC/PowerPCRegisterInfo.cpp +++ b/lib/Target/PowerPC/PowerPCRegisterInfo.cpp @@ -153,21 +153,19 @@ PowerPCRegisterInfo::eliminateFrameIndex(MachineFunction &MF, int FrameIndex = MI.getOperand(i).getFrameIndex(); - // This must be part of a four operand memory reference. Replace the - // FrameIndex with base register with GPR1. + // Replace the FrameIndex with base register with GPR1. MI.SetMachineOperandReg(i, PPC32::R1); - // Take into account whether its an add or mem instruction - if (i == 2) i--; - + // Take into account whether it's an add or mem instruction + unsigned OffIdx = (i == 2) ? 1 : 2; // Now add the frame object offset to the offset from r1. int Offset = MF.getFrameInfo()->getObjectOffset(FrameIndex) + - MI.getOperand(i).getImmedValue()+4; + MI.getOperand(OffIdx).getImmedValue()+4; if (!hasFP(MF)) Offset += MF.getFrameInfo()->getStackSize(); - MI.SetMachineOperandConst(i, MachineOperand::MO_SignExtendedImmed, Offset); + MI.SetMachineOperandConst(OffIdx, MachineOperand::MO_SignExtendedImmed, Offset); DEBUG(std::cerr << "offset = " << Offset << std::endl); } |