From a58dcf9da47de5eda13145b3fe0746bff2086d2a Mon Sep 17 00:00:00 2001 From: dje Date: Wed, 24 Dec 2003 02:22:37 +0000 Subject: * function.c (assign_parms): Update max_parm_reg and parm_reg_stack_loc when adding new parm reg. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75001 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/function.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'gcc/function.c') diff --git a/gcc/function.c b/gcc/function.c index 6eb44aeec34..30ede39ef02 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -4740,9 +4740,28 @@ assign_parms (tree fndecl) if (REG_P (parmreg)) { + unsigned int regno = REGNO (parmreg); + emit_group_store (parmreg, entry_parm, TREE_TYPE (parm), int_size_in_bytes (TREE_TYPE (parm))); SET_DECL_RTL (parm, parmreg); + + if (regno >= max_parm_reg) + { + rtx *new; + int old_max_parm_reg = max_parm_reg; + + /* It's slow to expand this one register at a time, + but it's also rare and we need max_parm_reg to be + precisely correct. */ + max_parm_reg = regno + 1; + new = ggc_realloc (parm_reg_stack_loc, + max_parm_reg * sizeof (rtx)); + memset (new + old_max_parm_reg, 0, + (max_parm_reg - old_max_parm_reg) * sizeof (rtx)); + parm_reg_stack_loc = new; + parm_reg_stack_loc[regno] = stack_parm; + } } } -- cgit v1.2.1