diff options
author | Alan Modra <amodra@bigpond.net.au> | 2004-08-25 03:40:27 +0000 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2004-08-25 13:10:27 +0930 |
commit | e548ead97f3db1ec58643181f81c3a438da6c554 (patch) | |
tree | 53f77fe437614e0149a5ba4fc1539cd189e881ed /gcc | |
parent | 5352bda03ee91af3e4592d0f62178fae15daab40 (diff) | |
download | gcc-e548ead97f3db1ec58643181f81c3a438da6c554.zip gcc-e548ead97f3db1ec58643181f81c3a438da6c554.tar.gz gcc-e548ead97f3db1ec58643181f81c3a438da6c554.tar.bz2 |
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
Diffstat (limited to 'gcc')
-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 |