regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR and corresponding...
authorJan Hubicka <jh@suse.cz>
Tue, 4 Sep 2007 10:29:23 +0000 (12:29 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 4 Sep 2007 10:29:23 +0000 (10:29 +0000)
* regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
and corresponding MATCH_DUP.
* regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.

From-SVN: r128073

gcc/ChangeLog
gcc/regrename.c

index e3c0ea4a8263ed1824c148569f4b15d17962e5d2..1e56d980a3dbbc8248abb23d161e5de29947f0d5 100644 (file)
@@ -1,3 +1,12 @@
+2007-09-04  Jan Hubicka  <jh@suse.cz>
+
+       * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
+
+2007-09-04  Jan Hubicka  <jh@suse.cz>
+
+       * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
+       and corresponding MATCH_DUP.
+
 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
 
        PR middle-end/33187
index 68a3e68f78e5de28a302b917bdf2aa04d16a48f0..5ff3062503ed7b2755197f91625885271be0de99 100644 (file)
@@ -807,16 +807,8 @@ build_def_use (basic_block bb)
            }
          for (i = 0; i < recog_data.n_dups; i++)
            {
-             int dup_num = recog_data.dup_num[i];
-
              old_dups[i] = *recog_data.dup_loc[i];
              *recog_data.dup_loc[i] = cc0_rtx;
-
-             /* For match_dup of match_operator or match_parallel, share
-                them, so that we don't miss changes in the dup.  */
-             if (icode >= 0
-                 && insn_data[icode].operand[dup_num].eliminable == 0)
-               old_dups[i] = recog_data.operand[dup_num];
            }
 
          scan_rtx (insn, &PATTERN (insn), NO_REGS, terminate_all_read,
@@ -1745,7 +1737,7 @@ copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd)
              recog_data.operand[i] = new;
              for (j = 0; j < recog_data.n_dups; j++)
                if (recog_data.dup_num[j] == i)
-                 validate_change (insn, recog_data.dup_loc[j], new, 1);
+                 validate_unshare_change (insn, recog_data.dup_loc[j], new, 1);
 
              any_replacements = true;
            }