From 40d2032bdfbfe0c8f3c80f69235c91a570ce0967 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Wed, 28 Dec 1994 18:31:51 -0800 Subject: [PATCH] (sh_expand_prologue): Clear extra_push at start. (sh_expand_prologue): Clear extra_push at start. Clear current_function_anonymous_args if set. Clear shiftsyms array. (sh_expand_epilogue): Don't clear extra_push, current_function_pretend_args_size, current_function_anonymous_args, and shiftsyms array. From-SVN: r8697 --- gcc/config/sh/sh.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index ef7e73c890c..4b76a602e30 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -2106,7 +2106,7 @@ void sh_expand_prologue () { int live_regs_mask; - int d; + int d, i; extern tree current_function_decl; live_regs_mask = calc_live_regs (&d); @@ -2114,10 +2114,15 @@ sh_expand_prologue () and partially on the stack - eg a large structure */ output_stack_adjust (-current_function_pretend_args_size); + extra_push = 0; + + /* This is set by SETUP_VARARGS to indicate that this is a varargs + routine. Clear it here so that the next function isn't affected. */ if (current_function_anonymous_args) { + current_function_anonymous_args = 0; + /* Push arg regs as if they'd been provided by caller in stack */ - int i; for (i = 0; i < NPARM_REGS; i++) { int rn = NPARM_REGS + FIRST_PARM_REG - i - 1; @@ -2139,18 +2144,19 @@ sh_expand_prologue () add_function (IDENTIFIER_POINTER (DECL_NAME (current_function_decl))); } - + /* ??? Hack. Clear out the table set up by gen_shifty_op since this + info does not apply to the next function. */ + for (i = 0; i < 32; i++) + shiftsyms[i] = 0; } void sh_expand_epilogue () { int live_regs_mask; - int d; - int i; + int d, i; live_regs_mask = calc_live_regs (&d); - if (frame_pointer_needed) { @@ -2170,13 +2176,6 @@ sh_expand_epilogue () } output_stack_adjust (extra_push + current_function_pretend_args_size); - - extra_push = 0; - current_function_pretend_args_size = 0; - current_function_anonymous_args = 0; - for (i = 0; i < 32; i++) - shiftsyms[i] = 0; - } /* Define the offset between two registers, one to be eliminated, and -- 2.30.2