From 987732e0c88255f18d408d2ad35eb7bcff865083 Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Sat, 22 Jan 2005 03:09:23 +0000 Subject: [PATCH] re PR target/19491 (va_start incorrect, Number of floating point and integer registers counted incorrectly) 2005-01-20 David Edelsohn Andrew Pinski 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 From-SVN: r94059 --- gcc/ChangeLog | 7 +++++++ gcc/config/rs6000/rs6000.c | 6 ++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7f2a8c98b47..9be2bad8ed2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-01-20 David Edelsohn + Andrew Pinski + + 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 * config/rs6000/rtems.h: Update copyright. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 02a829b1952..278751bf814 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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 = " -- 2.30.2