integrate.c (save_for_inline_copying): Copy parm_reg_stack_loc.

* integrate.c (save_for_inline_copying): Copy parm_reg_stack_loc.

fixes many of the inlining problems causing various suite++ and perennial
test failures, among others

From-SVN: r16171
This commit is contained in:
Jim Wilson 1997-10-25 00:50:35 +00:00 committed by Brendan Kehoe
parent 17ad8a3bb9
commit f15e65f1fe
2 changed files with 15 additions and 0 deletions

View File

@ -1,3 +1,7 @@
Fri Oct 24 17:49:10 1997 Jim Wilson <wilson@cygnus.com>
* integrate.c (save_for_inline_copying): Copy parm_reg_stack_loc.
Fri Oct 24 17:40:34 1997 Jeffrey A Law (law@cygnus.com)
* mn10200.c (indirect_memory_operand): Delete unused function.

View File

@ -413,6 +413,7 @@ save_for_inline_copying (fndecl)
int max_uid;
rtx first_nonparm_insn;
char *new, *new1;
rtx *new2;
/* Make and emit a return-label if we have not already done so.
Do this before recording the bounds on label numbers. */
@ -538,6 +539,16 @@ save_for_inline_copying (fndecl)
XEXP (regno_reg_rtx[i], 0)
= copy_for_inline (XEXP (regno_reg_rtx[i], 0));
/* Copy the parm_reg_stack_loc array, and substitute for all of the rtx
contained in it. */
new2 = savealloc (max_parm_reg * sizeof (rtx));
bcopy ((char *) parm_reg_stack_loc, (char *) new2,
max_parm_reg * sizeof (rtx));
parm_reg_stack_loc = new2;
for (i = LAST_VIRTUAL_REGISTER + 1; i < max_parm_reg; ++i)
if (parm_reg_stack_loc[i])
parm_reg_stack_loc[i] = copy_for_inline (parm_reg_stack_loc[i]);
/* Copy the tree of subblocks of the function, and the decls in them.
We will use the copy for compiling this function, then restore the original
subblocks and decls for use when inlining this function.