*** empty log message ***
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 26 May 1992 01:33:51 +0000 (21:33 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 26 May 1992 01:33:51 +0000 (21:33 -0400)
From-SVN: r1087

gcc/cse.c

index 940a0bedb59cbf04f9cfa4cd258a36833658e7db..dc7096b2c10292c0859ff43e897ff508faa387ca 100644 (file)
--- 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;