Fix stack size processing now that the return address isn't an implied
authorReid Spencer <rspencer@reidspencer.com>
Mon, 9 Aug 2004 01:24:32 +0000 (01:24 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Mon, 9 Aug 2004 01:24:32 +0000 (01:24 +0000)
push onto the top of the stack like x86, which uses the local area
offset.  This will allow the removal of PowerPCPEI.cpp soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15573 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PowerPCRegisterInfo.cpp

index 42f2d3e9e8337ef432803b9d0b3faa43eafd49f3..7607a0582458d241616199970ee1b989cc52107e 100644 (file)
@@ -210,9 +210,11 @@ void PowerPCRegisterInfo::emitPrologue(MachineFunction &MF) const {
   // Do we need to allocate space on the stack?
   if (NumBytes == 0) return;
 
-  // Round the size to a multiple of the alignment
+  // Add the size of R1 to  NumBytes size for the store of R1 to the bottom 
+  // of the stack and round the size to a multiple of the alignment.
   unsigned Align = MF.getTarget().getFrameInfo()->getStackAlignment();
-  NumBytes = (NumBytes+Align-1)/Align*Align;
+  unsigned Size = getRegClass(PPC32::R1)->getSize();
+  NumBytes = (NumBytes+Size+Align-1)/Align*Align;
 
   // Update frame info to pretend that this is part of the stack...
   MFI->setStackSize(NumBytes);