diff options
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 3 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/sysv4.h | 2 |
4 files changed, 10 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e52036f..979fb11 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2004-08-25 Alan Modra <amodra@bigpond.net.au> + + 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 <rth@redhat.com> PR target/16298 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index c6198cf..b6175f3 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 182b5f1..f1bf91b5 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 75be99e..f3f722d 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 |