* Follow the PowerPC convention of leaving 24 bytes for linking on the stack.
authorMisha Brukman <brukman+llvm@gmail.com>
Thu, 1 Jul 2004 21:35:00 +0000 (21:35 +0000)
committerMisha Brukman <brukman+llvm@gmail.com>
Thu, 1 Jul 2004 21:35:00 +0000 (21:35 +0000)
* Also leave space for spilling integer registers (this should be calculated)

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

lib/Target/PowerPC/PowerPCRegisterInfo.cpp

index 5178970c115aee0155a55ac5e5da9b58ecac7f99..ebf8ceb96c89ec3ef3dddf791ee94bfebdec90e7 100644 (file)
@@ -195,7 +195,10 @@ void PowerPCRegisterInfo::emitPrologue(MachineFunction &MF) const {
     // in the function immediately on entry to the current function.  This
     // eliminates the need for add/sub brackets around call sites.
     //
-    NumBytes += MFI->getMaxCallFrameSize();
+    NumBytes += MFI->getMaxCallFrameSize() + 
+                24   /* Predefined PowerPC link area */ + 
+                12*4 /* Spilled int regs */ +
+                0*8  /* Spilled fp regs */;
     
     // Round the size to a multiple of the alignment (don't forget the 4 byte
     // offset though).
@@ -217,7 +220,7 @@ void PowerPCRegisterInfo::emitPrologue(MachineFunction &MF) const {
   
   // adjust stack pointer: r1 -= numbytes
   if (NumBytes) {
-    MI = BuildMI(PPC32::STWU, 2, PPC32::R1).addImm(-80).addReg(PPC32::R1);
+    MI = BuildMI(PPC32::STWU, 2, PPC32::R1).addImm(-NumBytes).addReg(PPC32::R1);
     MBB.insert(MBBI, MI);
   }
 }