From e548ead97f3db1ec58643181f81c3a438da6c554 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 25 Aug 2004 03:40:27 +0000 Subject: [PATCH] re PR target/17052 (altivec varargs failure if no optimization) PR target/17052 * config/rs6000/rs6000.h (machine_function): Remove sysv_varargs_p. * config/rs6000/sysv4.h (RS6000_VARARGS_AREA): Use current_function_stdarg in place of sysv_varargs_p. * config/rs6000/rs6000.c (setup_incoming_varargs): Don't set sysv_varargs_p. From-SVN: r86533 --- gcc/ChangeLog | 9 +++++++++ gcc/config/rs6000/rs6000.c | 3 --- gcc/config/rs6000/rs6000.h | 2 -- gcc/config/rs6000/sysv4.h | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e52036f9dda..979fb11a284 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2004-08-25 Alan Modra + + PR target/17052 + * config/rs6000/rs6000.h (machine_function): Remove sysv_varargs_p. + * config/rs6000/sysv4.h (RS6000_VARARGS_AREA): Use + current_function_stdarg in place of sysv_varargs_p. + * config/rs6000/rs6000.c (setup_incoming_varargs): Don't set + sysv_varargs_p. + 2004-08-24 Richard Henderson PR target/16298 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index c6198cf6392..b6175f37af7 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -5304,8 +5304,6 @@ setup_incoming_varargs (CUMULATIVE_ARGS *cum, enum machine_mode mode, if (DEFAULT_ABI == ABI_V4) { - /* Indicate to allocate space on the stack for varargs save area. */ - cfun->machine->sysv_varargs_p = 1; if (! no_rtl) save_area = plus_constant (virtual_stack_vars_rtx, - RS6000_VARARGS_SIZE); @@ -5316,7 +5314,6 @@ setup_incoming_varargs (CUMULATIVE_ARGS *cum, enum machine_mode mode, { first_reg_offset = next_cum.words; save_area = virtual_incoming_args_rtx; - cfun->machine->sysv_varargs_p = 0; if (targetm.calls.must_pass_in_stack (mode, type)) first_reg_offset += rs6000_arg_size (TYPE_MODE (type), type); diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 182b5f1d66f..f1bf91b5eb0 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -1639,8 +1639,6 @@ extern enum rs6000_abi rs6000_current_abi; /* available for use by subtarget */ This is added to the cfun structure. */ typedef struct machine_function GTY(()) { - /* Whether a System V.4 varargs area was created. */ - int sysv_varargs_p; /* Flags if __builtin_return_address (n) with n >= 1 was used. */ int ra_needs_full_frame; /* Some local-dynamic symbol. */ diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index 75be99e344e..f3f722d6db8 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -332,7 +332,7 @@ do { \ /* Size of the V.4 varargs area if needed. */ /* Override rs6000.h definition. */ #undef RS6000_VARARGS_AREA -#define RS6000_VARARGS_AREA ((cfun->machine->sysv_varargs_p) ? RS6000_VARARGS_SIZE : 0) +#define RS6000_VARARGS_AREA (current_function_stdarg ? RS6000_VARARGS_SIZE : 0) /* Override default big endianism definitions in rs6000.h. */ #undef BYTES_BIG_ENDIAN -- 2.30.2