function.c (assign_parms): Update max_parm_reg and parm_reg_stack_loc when adding new parm reg.

* function.c (assign_parms): Update max_parm_reg and
        parm_reg_stack_loc when adding new parm reg.

From-SVN: r75001
This commit is contained in:
David Edelsohn 2003-12-24 02:22:37 +00:00 committed by David Edelsohn
parent 2ab127f3ef
commit 8deb9aee94
2 changed files with 24 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2003-12-23 David Edelsohn <edelsohn@gnu.org>
* function.c (assign_parms): Update max_parm_reg and
parm_reg_stack_loc when adding new parm reg.
2003-12-23 Kazu Hirata <kazu@cs.umass.edu>
* config/ns32k/ns32k.c: Convert to ISO-C.

View File

@ -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;
}
}
}