aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2004-08-25 03:40:27 +0000
committerAlan Modra <amodra@gcc.gnu.org>2004-08-25 13:10:27 +0930
commite548ead97f3db1ec58643181f81c3a438da6c554 (patch)
tree53f77fe437614e0149a5ba4fc1539cd189e881ed /gcc
parent5352bda03ee91af3e4592d0f62178fae15daab40 (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--gcc/config/rs6000/rs6000.c3
-rw-r--r--gcc/config/rs6000/rs6000.h2
-rw-r--r--gcc/config/rs6000/sysv4.h2
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