OSDN Git Service

* i386.c (ix86_compute_frame_size): Omit padding1 if the
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 30 Jan 2000 21:27:22 +0000 (21:27 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 30 Jan 2000 21:27:22 +0000 (21:27 +0000)
        local frame size is zero.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31703 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.c

index 07875c8..f8de2e2 100644 (file)
@@ -1,5 +1,10 @@
 2000-01-30  Richard Henderson  <rth@cygnus.com>
 
+       * i386.c (ix86_compute_frame_size): Omit padding1 if the
+       local frame size is zero.
+
+2000-01-30  Richard Henderson  <rth@cygnus.com>
+
        * alpha.c (alpha_expand_epilogue): Don't emit the return insn.
        * alpha.h (EPILOGUE_USES): New.  Mark $26 live.
        * alpha.md (return): Turn into an expander.
index a5f2524..69d71ce 100644 (file)
@@ -1734,7 +1734,6 @@ ix86_compute_frame_size (size, nregs_on_stack, rpadding1, rpadding2)
   int stack_alignment_needed = cfun->stack_alignment_needed / BITS_PER_UNIT;
 
   nregs = ix86_nsaved_regs ();
-
   total_size = size;
 
 #ifdef PREFERRED_STACK_BOUNDARY
@@ -1762,9 +1761,12 @@ ix86_compute_frame_size (size, nregs_on_stack, rpadding1, rpadding2)
     total_size += offset;
 
     /* Align start of frame for local function.  */
-    padding1 = ((offset + stack_alignment_needed - 1)
-               & -stack_alignment_needed) - offset;
-    total_size += padding1;
+    if (size > 0)
+      {
+        padding1 = ((offset + stack_alignment_needed - 1)
+                   & -stack_alignment_needed) - offset;
+        total_size += padding1;
+      }
 
     /* Align stack boundary. */
     if (!current_function_is_leaf)
@@ -1775,10 +1777,8 @@ ix86_compute_frame_size (size, nregs_on_stack, rpadding1, rpadding2)
 
   if (nregs_on_stack)
     *nregs_on_stack = nregs;
-
   if (rpadding1)
     *rpadding1 = padding1;
-
   if (rpadding2)
     *rpadding2 = padding2;