integrate.c (copy_rtx_and_substitute, case MEM): If inlining and not for LHS, clear...
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Fri, 28 Dec 2001 01:46:22 +0000 (01:46 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 28 Dec 2001 01:46:22 +0000 (20:46 -0500)
* integrate.c (copy_rtx_and_substitute, case MEM): If inlining
and not for LHS, clear RTX_UNCHANGING_P.

From-SVN: r48337

gcc/ChangeLog
gcc/integrate.c

index a5e4b93..82365dd 100644 (file)
@@ -1,3 +1,8 @@
+Thu Dec 27 20:39:55 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * integrate.c (copy_rtx_and_substitute, case MEM): If inlining
+       and not for LHS, clear RTX_UNCHANGING_P.
+
 2001-12-28  Philipp Thomas  <pthomas@suse.de>
 
        * cppfiles.c (stack_include_file): Don't translate <stdin>.
index 45de618..ea38981 100644 (file)
@@ -2267,6 +2267,13 @@ copy_rtx_and_substitute (orig, map, for_lhs)
       PUT_MODE (copy, mode);
       XEXP (copy, 0) = copy_rtx_and_substitute (XEXP (orig, 0), map, 0);
       MEM_COPY_ATTRIBUTES (copy, orig);
+
+      /* If inlining and this is not for the LHS, turn off RTX_UNCHANGING_P
+        since this may be an indirect reference to a parameter and the
+        actual may not be readonly.  */
+      if (inlining && !for_lhs)
+       RTX_UNCHANGING_P (copy) = 0;
+
       return copy;
 
     default: