diff options
author | Brian Gaeke <gaeke@uiuc.edu> | 2004-10-10 19:57:21 +0000 |
---|---|---|
committer | Brian Gaeke <gaeke@uiuc.edu> | 2004-10-10 19:57:21 +0000 |
commit | 85c08351cec796d541c18435c6e6c0edec343e93 (patch) | |
tree | 27d466656c17abe34061df001924145d0fdbec35 /lib/Target/Sparc | |
parent | 9f0cecd4385d778c20859ad18ee43389e1337b33 (diff) |
Implement eliminateCallFramePseudoInstr().
Wrap a long comment line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16883 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Sparc')
-rw-r--r-- | lib/Target/Sparc/SparcRegisterInfo.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/Target/Sparc/SparcRegisterInfo.cpp b/lib/Target/Sparc/SparcRegisterInfo.cpp index 9b3c68b8fe..f09b1aff96 100644 --- a/lib/Target/Sparc/SparcRegisterInfo.cpp +++ b/lib/Target/Sparc/SparcRegisterInfo.cpp @@ -77,10 +77,12 @@ void SparcV8RegisterInfo::copyRegToReg(MachineBasicBlock &MBB, void SparcV8RegisterInfo:: eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const { - std::cerr - << "Sorry, I don't know how to eliminate call frame pseudo instrs yet, in\n" - << __FUNCTION__ << " at " << __FILE__ << ":" << __LINE__ << "\n"; - abort(); + MachineInstr &MI = *I; + int size = MI.getOperand (0).getImmedValue (); + if (MI.getOpcode () == V8::ADJCALLSTACKDOWN) + size = -size; + BuildMI (MBB, I, V8::ADDri, 2, V8::SP).addReg (V8::SP).addSImm (size); + MBB.erase (I); } void @@ -115,8 +117,8 @@ void SparcV8RegisterInfo::emitPrologue(MachineFunction &MF) const { // Get the number of bytes to allocate from the FrameInfo int NumBytes = (int) MFI->getStackSize(); - // Emit the correct save instruction based on the number of bytes in the frame. - // Minimum stack frame size according to V8 ABI is: + // Emit the correct save instruction based on the number of bytes in + // the frame. Minimum stack frame size according to V8 ABI is: // 16 words for register window spill // 1 word for address of returned aggregate-value // + 6 words for passing parameters on the stack |