diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 7 |
2 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0b9b000659c..fb046f44633 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-03-01 Richard Henderson <rth@redhat.com> + + * config/ia64/ia64.c (ia64_initial_elimination_offset): Do not + adjust argument_pointer by pretend_args_size. + (ia64_va_start): Adjust va_start address by -pretend_args_size. + 2002-03-01 Kazu Hirata <kazu@hxi.com> * config/h8300/h8300.c (h8300_adjust_insn_length): Clean up. diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index c4b6afb7ba5..e4f6268b505 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -1664,10 +1664,9 @@ 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 - current_function_pretend_args_size; + offset = 16; else if (to == STACK_POINTER_REGNUM) - offset = (current_frame_info.total_size - + 16 - current_function_pretend_args_size); + offset = current_frame_info.total_size + 16; else abort (); break; @@ -3220,7 +3219,7 @@ ia64_va_start (stdarg_p, valist, nextarg) else ofs = (arg_words >= MAX_ARGUMENT_SLOTS ? -UNITS_PER_WORD : 0); - nextarg = plus_constant (nextarg, ofs); + nextarg = plus_constant (nextarg, ofs - current_function_pretend_args_size); std_expand_builtin_va_start (1, valist, nextarg); } |