diff options
author | Andreas Krebbel <krebbel1@de.ibm.com> | 2006-05-30 16:54:08 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2006-05-30 16:54:08 +0000 |
commit | 67e0a632e6a041394663b2cf6f5dcf642fe662eb (patch) | |
tree | 32876cb8b388444f43ea53dad4890c74c0bff90e /gcc/cse.c | |
parent | 70233f378882c295d33065075e476487c1bd1729 (diff) | |
download | gcc-67e0a632e6a041394663b2cf6f5dcf642fe662eb.zip gcc-67e0a632e6a041394663b2cf6f5dcf642fe662eb.tar.gz gcc-67e0a632e6a041394663b2cf6f5dcf642fe662eb.tar.bz2 |
cse.c (validate_canon_reg, cse_insn): Don't change insns without calling recog.
2006-05-30 Andreas Krebbel <krebbel1@de.ibm.com>
* cse.c (validate_canon_reg, cse_insn): Don't change insns without
calling recog.
From-SVN: r114241
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 22 |
1 files changed, 3 insertions, 19 deletions
@@ -2728,17 +2728,10 @@ static void validate_canon_reg (rtx *xloc, rtx insn) { rtx new = canon_reg (*xloc, insn); - int insn_code; /* If replacing pseudo with hard reg or vice versa, ensure the insn remains valid. Likewise if the insn has MATCH_DUPs. */ - if (insn != 0 && new != 0 - && REG_P (new) && REG_P (*xloc) - && (((REGNO (new) < FIRST_PSEUDO_REGISTER) - != (REGNO (*xloc) < FIRST_PSEUDO_REGISTER)) - || GET_MODE (new) != GET_MODE (*xloc) - || (insn_code = recog_memoized (insn)) < 0 - || insn_data[insn_code].n_dups > 0)) + if (insn != 0 && new != 0) validate_change (insn, xloc, new, 1); else *xloc = new; @@ -2748,8 +2741,7 @@ validate_canon_reg (rtx *xloc, rtx insn) replace each register reference inside it with the "oldest" equivalent register. - If INSN is nonzero and we are replacing a pseudo with a hard register - or vice versa, validate_change is used to ensure that INSN remains valid + If INSN is nonzero validate_change is used to ensure that INSN remains valid after we make our substitution. The calls are made with IN_GROUP nonzero so apply_change_group must be called upon the outermost return from this function (unless INSN is zero). The result of apply_change_group can @@ -4943,17 +4935,9 @@ cse_insn (rtx insn, rtx libcall_insn) rtx dest = SET_DEST (sets[i].rtl); rtx src = SET_SRC (sets[i].rtl); rtx new = canon_reg (src, insn); - int insn_code; sets[i].orig_src = src; - if ((REG_P (new) && REG_P (src) - && ((REGNO (new) < FIRST_PSEUDO_REGISTER) - != (REGNO (src) < FIRST_PSEUDO_REGISTER))) - || (insn_code = recog_memoized (insn)) < 0 - || insn_data[insn_code].n_dups > 0) - validate_change (insn, &SET_SRC (sets[i].rtl), new, 1); - else - SET_SRC (sets[i].rtl) = new; + validate_change (insn, &SET_SRC (sets[i].rtl), new, 1); if (GET_CODE (dest) == ZERO_EXTRACT) { |