diff options
author | Jan Hubicka <jh@suse.cz> | 2007-09-04 12:29:23 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2007-09-04 10:29:23 +0000 |
commit | e96a54f7801cd39ecf62ed88e38e7a16299e7998 (patch) | |
tree | 9e2793de9a5d32dbc94f1c6424858af9f5305430 /gcc | |
parent | 95afbcac54236d4704a84d2c0fff4dd63005d30c (diff) | |
download | gcc-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')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/regrename.c | 10 |
2 files changed, 10 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e3c0ea4..1e56d98 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 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; } |