diff options
author | David Edelsohn <edelsohn@gnu.org> | 2003-12-24 02:22:37 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2003-12-23 21:22:37 -0500 |
commit | 8deb9aee9477fbe8fd8a0c9faf8b392ed07a3734 (patch) | |
tree | 87d1768140c9ea5855f3647e421b14c63deeae7d | |
parent | 2ab127f3ef93106864c0961bebe4cedd76453531 (diff) | |
download | gcc-8deb9aee9477fbe8fd8a0c9faf8b392ed07a3734.zip gcc-8deb9aee9477fbe8fd8a0c9faf8b392ed07a3734.tar.gz gcc-8deb9aee9477fbe8fd8a0c9faf8b392ed07a3734.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/function.c | 19 |
2 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cce4623..fc2f387 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/function.c b/gcc/function.c index 6eb44ae..30ede39 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; + } } } |