re PR target/17052 (altivec varargs failure if no optimization)
authorAlan Modra <amodra@bigpond.net.au>
Wed, 25 Aug 2004 03:40:27 +0000 (03:40 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Wed, 25 Aug 2004 03:40:27 +0000 (13:10 +0930)
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
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/config/rs6000/sysv4.h

index e52036f9ddacab500356991232adb26c3fc078a1..979fb11a284d3907f9221a93db3838493bd0615d 100644 (file)
@@ -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
index c6198cf6392f37247a1e28d841f3759bf66eb18f..b6175f37af721c93d3d26508c849103b1a2678fc 100644 (file)
@@ -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);
index 182b5f1d66ffb7b07b275a1d3d7eaff1caedcaff..f1bf91b5eb019406d11b22a5ae79dc4c6822d9f1 100644 (file)
@@ -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.  */
index 75be99e344eca4f40b261035b544927313c9fb31..f3f722d6db8d615c663bb62b63f5f98b7f971805 100644 (file)
@@ -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