Fix c++ problem resulting from ADDRESSOF support.
authorJim Wilson <wilson@cygnus.com>
Wed, 5 Nov 1997 01:15:04 +0000 (01:15 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Wed, 5 Nov 1997 01:15:04 +0000 (17:15 -0800)
* integrate.c (save_for_inline_copying): Copy parm_reg_stack_loc.

From-SVN: r16330

gcc/ChangeLog
gcc/integrate.c

index bd1dfa5a549e92f024bcdd6f73837e1d822287f3..d95844d19a192ab74d5ef21f685f56e748fb0473 100644 (file)
@@ -1,5 +1,7 @@
 Tue Nov  4 16:55:11 1997  Jim Wilson  <wilson@cygnus.com>
 
+       * integrate.c (save_for_inline_copying): Copy parm_reg_stack_loc.
+
        * reload.c (find_reloads, case 'm' and 'o'): Reject HIGH constants.
 
        * mips.c (mips_expand_epilogue): Emit blockage insn before call to
index 3931dee279d9b527d84fa6c3d22383060922f47d..4c887fbcf762207274b2addb8c1dd4f752ea20bb 100644 (file)
@@ -415,6 +415,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.  */
@@ -539,6 +540,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.