]> gcc.gnu.org Git - gcc.git/commitdiff
(expand_inline_function): Set map->integrating.
authorJim Wilson <wilson@gcc.gnu.org>
Fri, 14 May 1993 17:21:54 +0000 (10:21 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Fri, 14 May 1993 17:21:54 +0000 (10:21 -0700)
(copy_rtx_and_substitute, case MEM): Don't copy RTX_UNCHANGING_P
when doing function inlining.

From-SVN: r4453

gcc/integrate.c

index 6a7fef56a9f9f379c2b3bbe1616430154d36492c..6ad951e8044b136feae269fb9be83f0c95220c20 100644 (file)
@@ -1289,6 +1289,8 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add
   map->min_insnno = 0;
   map->max_insnno = INSN_UID (header);
 
+  map->integrating = 1;
+
   /* const_equiv_map maps pseudos in our routine to constants, so it needs to
      be large enough for all our pseudos.  This is the number we are currently
      using plus the number in the called routine, plus 15 for each arg,
@@ -2157,7 +2159,15 @@ copy_rtx_and_substitute (orig, map)
       XEXP (copy, 0) = copy_rtx_and_substitute (XEXP (orig, 0), map);
       MEM_IN_STRUCT_P (copy) = MEM_IN_STRUCT_P (orig);
       MEM_VOLATILE_P (copy) = MEM_VOLATILE_P (orig);
-      RTX_UNCHANGING_P (copy) = RTX_UNCHANGING_P (orig);
+
+      /* If doing function inlining, this MEM might not be const in the
+        function that it is being inlined into, and thus may not be
+        unchanging after function inlining.  Constant pool references are
+        handled elsewhere, so this doesn't lose RTX_UNCHANGING_P bits
+        for them.  */
+      if (! map->integrating)
+       RTX_UNCHANGING_P (copy) = RTX_UNCHANGING_P (orig);
+
       return copy;
     }
 
This page took 0.061321 seconds and 5 git commands to generate.