PR 5977, 5991

PR 5977, 5991
        * config/ia64/ia64.c: Revert 2002-03-01 patch.
        * config/ia64/ia64.h (INIT_EXPANDERS): New.

From-SVN: r51053
This commit is contained in:
Richard Henderson 2002-03-19 15:05:30 -08:00 committed by Richard Henderson
parent 90158e35b8
commit 4b0bc48d2e
3 changed files with 18 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2002-03-19 Richard Henderson <rth@redhat.com>
PR 5977, 5991
* config/ia64/ia64.c: Revert 2002-03-01 patch.
* config/ia64/ia64.h (INIT_EXPANDERS): New.
2002-03-19 Olivier Hainque <hainque@act-europe.fr>
* varasm.c (output_constant_def): Don't call ENCODE_SECTION_INFO

View File

@ -1671,9 +1671,10 @@ ia64_initial_elimination_offset (from, to)
/* Arguments start above the 16 byte save area, unless stdarg
in which case we store through the 16 byte save area. */
if (to == HARD_FRAME_POINTER_REGNUM)
offset = 16;
offset = 16 - current_function_pretend_args_size;
else if (to == STACK_POINTER_REGNUM)
offset = current_frame_info.total_size + 16;
offset = (current_frame_info.total_size
+ 16 - current_function_pretend_args_size);
else
abort ();
break;
@ -3226,7 +3227,7 @@ ia64_va_start (stdarg_p, valist, nextarg)
else
ofs = (arg_words >= MAX_ARGUMENT_SLOTS ? -UNITS_PER_WORD : 0);
nextarg = plus_constant (nextarg, ofs - current_function_pretend_args_size);
nextarg = plus_constant (nextarg, ofs);
std_expand_builtin_va_start (1, valist, nextarg);
}

View File

@ -1151,6 +1151,14 @@ enum reg_class
in it. */
#define ARG_POINTER_REGNUM R_GR(0)
/* Due to the way varargs and argument spilling happens, the argument
pointer is not 16-byte aligned like the stack pointer. */
#define INIT_EXPANDERS \
do { \
if (cfun && cfun->emit->regno_pointer_align) \
REGNO_POINTER_ALIGN (ARG_POINTER_REGNUM) = 64; \
} while (0)
/* The register number for the return address register. For IA-64, this
is not actually a pointer as the name suggests, but that's a name that
gen_rtx_REG already takes care to keep unique. We modify