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
This commit is contained in:
Alan Modra 2004-08-25 03:40:27 +00:00 committed by Alan Modra
parent 5352bda03e
commit e548ead97f
4 changed files with 10 additions and 6 deletions

View 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

View 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);

View 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. */

View 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