There is no reason to align the stack pointer if there are no callees of this function!
authorChris Lattner <sabre@nondot.org>
Sat, 14 Feb 2004 20:10:59 +0000 (20:10 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 14 Feb 2004 20:10:59 +0000 (20:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11449 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/PrologEpilogInserter.cpp

index 8f34cf48adb0fb0f3f1ef9972c0e081327d929df..bf1726d6ed9b54c6c684a64d9e25a64810f88835 100644 (file)
@@ -216,8 +216,11 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &Fn) {
     FFI->setObjectOffset(i, -Offset);        // Set the computed offset
   }
 
-  // Align the final stack pointer offset...
-  Offset = (Offset+StackAlignment-1)/StackAlignment*StackAlignment;
+  // Align the final stack pointer offset, but only if there are calls in the
+  // function.  This ensures that any calls to subroutines have their stack
+  // frames suitable aligned.
+  if (FFI->hasCalls())
+    Offset = (Offset+StackAlignment-1)/StackAlignment*StackAlignment;
 
   // Set the final value of the stack pointer...
   FFI->setStackSize(Offset-TFI.getOffsetOfLocalArea());