OSDN Git Service

* function.c (assign_parms): Correct reversed reg_parm_stack_space
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 May 2003 13:37:57 +0000 (13:37 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 May 2003 13:37:57 +0000 (13:37 +0000)
test.  Add partial in-regs size to stack_args_size.

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

gcc/ChangeLog
gcc/function.c

index ccb3fc1..09c1efa 100644 (file)
@@ -1,3 +1,8 @@
+2003-05-07  Alan Modra  <amodra@bigpond.net.au>
+
+       * function.c (assign_parms): Correct reversed reg_parm_stack_space
+       test.  Add partial in-regs size to stack_args_size.
+
 2003-05-07  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
 
        * doc/invoke.texi (Warning Options): Mark -Wmissing-declarations
index 232771e..f9c0e42 100644 (file)
@@ -4644,7 +4644,7 @@ assign_parms (fndecl)
          /* When REG_PARM_STACK_SPACE is nonzero, stack space for
             split parameters was allocated by our caller, so we
             won't be pushing it in the prolog.  */
-         if (reg_parm_stack_space)
+         if (reg_parm_stack_space == 0)
 #endif
          current_function_pretend_args_size
            = (((partial * UNITS_PER_WORD) + (PARM_BOUNDARY / BITS_PER_UNIT) - 1)
@@ -4694,6 +4694,9 @@ assign_parms (fndecl)
          )
        {
          stack_args_size.constant += locate.size.constant;
+         /* locate.size doesn't include the part in regs.  */
+         if (partial)
+           stack_args_size.constant += current_function_pretend_args_size;
          if (locate.size.var)
            ADD_PARM_SIZE (stack_args_size, locate.size.var);
        }