ia64.c (ia64_initial_elimination_offset): Do not adjust argument_pointer by pretend_a...
authorRichard Henderson <rth@redhat.com>
Fri, 1 Mar 2002 23:56:33 +0000 (15:56 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 1 Mar 2002 23:56:33 +0000 (15:56 -0800)
        * 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.

From-SVN: r50212

gcc/ChangeLog
gcc/config/ia64/ia64.c

index 0b9b000659cde4266510a9a6db6aeb71768fded2..fb046f44633522ed81ad8d8cc9bcf81f8b75d557 100644 (file)
@@ -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.
index c4b6afb7ba5fb8158c5b56d47509bc159cae442a..e4f6268b505e8a604d34e6117a7b67008161b94e 100644 (file)
@@ -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);
 }