re PR target/19491 (va_start incorrect, Number of floating point and integer register...
authorDavid Edelsohn <edelsohn@gnu.org>
Sat, 22 Jan 2005 03:09:23 +0000 (03:09 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Sat, 22 Jan 2005 03:09:23 +0000 (22:09 -0500)
2005-01-20  David Edelsohn  <edelsohn@gnu.org>
            Andrew Pinski  <pinskia@physics.uc.edu>

        PR target/19491
        * config/rs6000/rs6000.c (rs6000_va_start): Saturate n_gpr at
        maximum number of GPRs.  Saturate n_fpr at maximum number of FPRs.

Co-Authored-By: Andrew Pinski <pinskia@physics.uc.edu>
From-SVN: r94059

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

index 7f2a8c98b477772122cecd81f8ec4db0bbf62a72..9be2bad8ed289b758d49b712800e50a5a42ed998 100644 (file)
@@ -1,3 +1,10 @@
+2005-01-20  David Edelsohn  <edelsohn@gnu.org>
+            Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR target/19491
+       * config/rs6000/rs6000.c (rs6000_va_start): Saturate n_gpr at
+       maximum number of GPRs.  Saturate n_fpr at maximum number of FPRs.
+
 2005-01-22  Ralf Corsepius  <ralf.corsepius@rtems.org>
 
        * config/rs6000/rtems.h: Update copyright.
index 02a829b19522552521e79e101b5cf36f72c191bd..278751bf814d1499104667e43b777902566ee4cd 100644 (file)
@@ -5995,8 +5995,10 @@ rs6000_va_start (tree valist, rtx nextarg)
 
   /* Count number of gp and fp argument registers used.  */
   words = current_function_args_info.words;
-  n_gpr = current_function_args_info.sysv_gregno - GP_ARG_MIN_REG;
-  n_fpr = current_function_args_info.fregno - FP_ARG_MIN_REG;
+  n_gpr = MIN (current_function_args_info.sysv_gregno - GP_ARG_MIN_REG,
+              GP_ARG_NUM_REG);
+  n_fpr = MIN (current_function_args_info.fregno - FP_ARG_MIN_REG,
+              FP_ARG_NUM_REG);
 
   if (TARGET_DEBUG_ARG)
     fprintf (stderr, "va_start: words = "HOST_WIDE_INT_PRINT_DEC", n_gpr = "