aboutsummaryrefslogtreecommitdiff
path: root/gcc/regrename.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2007-09-04 12:29:23 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2007-09-04 10:29:23 +0000
commite96a54f7801cd39ecf62ed88e38e7a16299e7998 (patch)
tree9e2793de9a5d32dbc94f1c6424858af9f5305430 /gcc/regrename.c
parent95afbcac54236d4704a84d2c0fff4dd63005d30c (diff)
downloadgcc-e96a54f7801cd39ecf62ed88e38e7a16299e7998.zip
gcc-e96a54f7801cd39ecf62ed88e38e7a16299e7998.tar.gz
gcc-e96a54f7801cd39ecf62ed88e38e7a16299e7998.tar.bz2
regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR and corresponding MATCH_DUP.
* 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
Diffstat (limited to 'gcc/regrename.c')
-rw-r--r--gcc/regrename.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/gcc/regrename.c b/gcc/regrename.c
index 68a3e68..5ff3062 100644
--- a/gcc/regrename.c
+++ b/gcc/regrename.c
@@ -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;
}