From 978e895200428deb56d3d1975e7b31415980fe91 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Wed, 31 Mar 1993 15:52:33 -0500 Subject: [PATCH] (INITIAL_ELIMINATION_OFFSET): Subtract current_function_pretend_args_size from OFFSET for AP. From-SVN: r3961 --- gcc/config/alpha/alpha.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index 63bf66b5314..c69aade111f 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -601,7 +601,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS, /* Definitions for register eliminations. - We have two registers that can be eliminated on the i386. First, the + We have two registers that can be eliminated on the Alpha. First, the frame pointer register can often be eliminated in favor of the stack pointer register. Secondly, the argument pointer register can always be eliminated; it is replaced with either the stack or frame pointer. */ @@ -630,9 +630,14 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS, { if ((FROM) == FRAME_POINTER_REGNUM && (TO) == STACK_POINTER_REGNUM) \ (OFFSET) = 0; \ else \ - (OFFSET) = (get_frame_size () + current_function_outgoing_args_size \ - + current_function_pretend_args_size \ - + alpha_sa_size () + 15) & ~ 15; \ + { \ + (OFFSET) = ((get_frame_size () + current_function_outgoing_args_size \ + + current_function_pretend_args_size \ + + alpha_sa_size () + 15) \ + & ~ 15); \ + if ((FROM) == ARG_POINTER_REGNUM) \ + (OFFSET) -= current_function_pretend_args_size; \ + } \ } /* Define this if stack space is still allocated for a parameter passed -- 2.30.2