function.c (assign_parms): Correct reversed reg_parm_stack_space test.
authorAlan Modra <amodra@bigpond.net.au>
Wed, 7 May 2003 13:37:57 +0000 (13:37 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Wed, 7 May 2003 13:37:57 +0000 (23:07 +0930)
* function.c (assign_parms): Correct reversed reg_parm_stack_space
test.  Add partial in-regs size to stack_args_size.

From-SVN: r66560

gcc/ChangeLog
gcc/function.c

index ccb3fc1375ccf90e16be783c661656aad02c6ea9..09c1efa8b21295c4c2fd3b200c52a8ca28b912fb 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 232771e695bf313d1467c43125b56983fccc389b..f9c0e42fa4d2430ea4a7dd16a73a1fd6800b5c47 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);
        }