aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-05-25 21:33:51 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-05-25 21:33:51 -0400
commit178c39f68b8df001076d4ede516e2d498c122004 (patch)
tree3ab7da0cad15866825e02ab5769530a1ab8f2c53
parent700f6f985c4d5645116d34470d9112183ee7a31b (diff)
downloadgcc-178c39f68b8df001076d4ede516e2d498c122004.zip
gcc-178c39f68b8df001076d4ede516e2d498c122004.tar.gz
gcc-178c39f68b8df001076d4ede516e2d498c122004.tar.bz2
*** empty log message ***
From-SVN: r1087
-rw-r--r--gcc/cse.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index 940a0be..dc7096b 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -2360,10 +2360,11 @@ canon_reg (x, insn)
rtx new = canon_reg (XEXP (x, i), insn);
/* If replacing pseudo with hard reg or vice versa, ensure the
- insn remains valid. */
+ insn remains valid. Likewise if the insn has MATCH_DUPs. */
if (new && GET_CODE (new) == REG && GET_CODE (XEXP (x, i)) == REG
- && ((REGNO (new) < FIRST_PSEUDO_REGISTER)
- != (REGNO (XEXP (x, i)) < FIRST_PSEUDO_REGISTER)))
+ && (((REGNO (new) < FIRST_PSEUDO_REGISTER)
+ != (REGNO (XEXP (x, i)) < FIRST_PSEUDO_REGISTER))
+ || (insn != 0 && insn_n_dups[recog_memoized (insn)] > 0)))
validate_change (insn, &XEXP (x, i), new, 0);
else
XEXP (x, i) = new;