diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f5cfca8cd6bdb4567fb2e0103fbc82eb9b9b38ca..dcdefc80e5472e2349c1913007bdf7ee27570e56 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2002-06-28 Jan Hubicka <jh@suse.cz> + + * gcse.c (gcse_emit_move_after): Use gen_move_insn to produce the move. + 2002-06-28 Stephen Clarke <stephen.clarke@superh.com> * combine.c (combine_simplify_rtx): Pass the mode of the diff --git a/gcc/gcse.c b/gcc/gcse.c index daeaa909144e41e605324c4a9feaf8922818def1..665be1fd9a35d2b22b1230fa5fd2ce181b23d59c 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -5144,21 +5144,19 @@ gcse_emit_move_after (src, dest, insn) rtx src, dest, insn; { rtx new; - rtx set = single_set (insn); + rtx set = single_set (insn), set2; rtx note; rtx eqv; /* This should never fail since we're creating a reg->reg copy we've verified to be valid. */ - new = emit_insn_after (gen_rtx_SET (VOIDmode, dest, src), insn); - - /* want_to_gcse_p verifies that this move will be valid. Still this call - is mandatory as it may create clobbers required by the pattern. */ - if (insn_invalid_p (insn)) - abort (); + new = emit_insn_after (gen_move_insn (dest, src), insn); /* Note the equivalence for local CSE pass. */ + set2 = single_set (new); + if (!set2 || !rtx_equal_p (SET_DEST (set2), dest)) + return new; if ((note = find_reg_equal_equiv_note (insn))) eqv = XEXP (note, 0); else