]> gcc.gnu.org Git - gcc.git/commitdiff
rs6000.c (setup_incoming_varargs): Round up va_list_gpr_size.
authorAlan Modra <amodra@gmail.com>
Fri, 7 Jun 2013 12:23:46 +0000 (21:53 +0930)
committerAlan Modra <amodra@gcc.gnu.org>
Fri, 7 Jun 2013 12:23:46 +0000 (21:53 +0930)
* config/rs6000/rs6000.c (setup_incoming_varargs): Round up
va_list_gpr_size.

From-SVN: r199808

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index b27f22a033f1d5fa6d27180f8b95a78f483ce042..025e2c5bed821e4f9b09ae3069d76d9ea80ccb08 100644 (file)
@@ -1,3 +1,8 @@
+2013-06-07  Alan Modra  <amodra@gmail.com>
+
+       * config/rs6000/rs6000.c (setup_incoming_varargs): Round up
+       va_list_gpr_size.
+
 2013-06-07  Alan Modra  <amodra@gmail.com>
 
        * varasm.c (force_const_mem): Assert mode is not VOID or BLK.
index cc16e3fb8197655d58744a94d2ef4acb208ccc97..3e019bb0697b244cccb1687076550e5629f7aa69 100644 (file)
@@ -9370,20 +9370,17 @@ setup_incoming_varargs (cumulative_args_t cum, enum machine_mode mode,
   if (! no_rtl && first_reg_offset < GP_ARG_NUM_REG
       && cfun->va_list_gpr_size)
     {
-      int nregs = GP_ARG_NUM_REG - first_reg_offset;
+      int n_gpr, nregs = GP_ARG_NUM_REG - first_reg_offset;
 
       if (va_list_gpr_counter_field)
-       {
-         /* V4 va_list_gpr_size counts number of registers needed.  */
-         if (nregs > cfun->va_list_gpr_size)
-           nregs = cfun->va_list_gpr_size;
-       }
+       /* V4 va_list_gpr_size counts number of registers needed.  */
+       n_gpr = cfun->va_list_gpr_size;
       else
-       {
-         /* char * va_list instead counts number of bytes needed.  */
-         if (nregs > cfun->va_list_gpr_size / reg_size)
-           nregs = cfun->va_list_gpr_size / reg_size;
-       }
+       /* char * va_list instead counts number of bytes needed.  */
+       n_gpr = (cfun->va_list_gpr_size + reg_size - 1) / reg_size;
+
+      if (nregs > n_gpr)
+       nregs = n_gpr;
 
       mem = gen_rtx_MEM (BLKmode,
                         plus_constant (Pmode, save_area,
This page took 0.096178 seconds and 5 git commands to generate.