]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
emit-rtl.c (reset_used_decls): Rename to...
authorRichard Sandiford <richard@codesourcery.com>
Thu, 2 Aug 2007 10:25:24 +0000 (10:25 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 2 Aug 2007 10:25:24 +0000 (10:25 +0000)
gcc/
* emit-rtl.c (reset_used_decls): Rename to...
(set_used_decls): ...this.  Set the used flag rather than clearing it.
(unshare_all_rtl_again): Update accordingly.  Set flags on argument
DECL_RTLs rather than resetting them.

From-SVN: r127153

gcc/ChangeLog
gcc/emit-rtl.c

index 93129e69148ccd68815d4467080b3e0de97fbaf2..3f67eb9356d3924ac326481bd81e01b5a7c3e902 100644 (file)
@@ -1,3 +1,10 @@
+2007-08-02  Richard Sandiford  <richard@codesourcery.com>
+
+       * emit-rtl.c (reset_used_decls): Rename to...
+       (set_used_decls): ...this.  Set the used flag rather than clearing it.
+       (unshare_all_rtl_again): Update accordingly.  Set flags on argument
+       DECL_RTLs rather than resetting them.
+
 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
 
        * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
index 3c6bf725e1cf51c236806472cacffed1f1f2b8b0..020847afdce32c33e54c1a8b72393b4c5ae03f3d 100644 (file)
@@ -167,7 +167,7 @@ static GTY ((if_marked ("ggc_marked_p"), param_is (struct rtx_def)))
 
 static rtx make_call_insn_raw (rtx);
 static rtx change_address_1 (rtx, enum machine_mode, rtx, int);
-static void reset_used_decls (tree);
+static void set_used_decls (tree);
 static void mark_label_nuses (rtx);
 static hashval_t const_int_htab_hash (const void *);
 static int const_int_htab_eq (const void *, const void *);
@@ -2160,11 +2160,11 @@ unshare_all_rtl_again (rtx insn)
       }
 
   /* Make sure that virtual stack slots are not shared.  */
-  reset_used_decls (DECL_INITIAL (cfun->decl));
+  set_used_decls (DECL_INITIAL (cfun->decl));
 
   /* Make sure that virtual parameters are not shared.  */
   for (decl = DECL_ARGUMENTS (cfun->decl); decl; decl = TREE_CHAIN (decl))
-    reset_used_flags (DECL_RTL (decl));
+    set_used_flags (DECL_RTL (decl));
 
   reset_used_flags (stack_slot_list);
 
@@ -2353,20 +2353,28 @@ unshare_all_rtl_in_chain (rtx insn)
 }
 
 /* Go through all virtual stack slots of a function and mark them as
-   not shared.  */
+   shared.  We never replace the DECL_RTLs themselves with a copy,
+   but expressions mentioned into a DECL_RTL cannot be shared with
+   expressions in the instruction stream.
+
+   Note that reload may convert pseudo registers into memories in-place.
+   Pseudo registers are always shared, but MEMs never are.  Thus if we
+   reset the used flags on MEMs in the instruction stream, we must set
+   them again on MEMs that appear in DECL_RTLs.  */
+
 static void
-reset_used_decls (tree blk)
+set_used_decls (tree blk)
 {
   tree t;
 
   /* Mark decls.  */
   for (t = BLOCK_VARS (blk); t; t = TREE_CHAIN (t))
     if (DECL_RTL_SET_P (t))
-      reset_used_flags (DECL_RTL (t));
+      set_used_flags (DECL_RTL (t));
 
   /* Now process sub-blocks.  */
   for (t = BLOCK_SUBBLOCKS (blk); t; t = TREE_CHAIN (t))
-    reset_used_decls (t);
+    set_used_decls (t);
 }
 
 /* Mark ORIG as in use, and return a copy of it if it was already in use.