From: Richard Henderson Date: Wed, 3 Aug 2005 04:32:00 +0000 (-0700) Subject: combine.c (combine_instructions): Don't use reg_equal/equiv results if the mode doesn... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=65030b761eb52ccc011643c90ad10e71b18898dd;p=gcc.git combine.c (combine_instructions): Don't use reg_equal/equiv results if the mode doesn't match. * combine.c (combine_instructions): Don't use reg_equal/equiv results if the mode doesn't match. From-SVN: r102679 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 97a45980ab6..f15d09e9218 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-08-02 Richard Henderson + + * combine.c (combine_instructions): Don't use reg_equal/equiv + results if the mode doesn't match. + 2005-08-02 Mark Mitchell * config/i386/t-mingw32 (NATIVE_SYSTEM_HEADER_DIR): Set it. diff --git a/gcc/combine.c b/gcc/combine.c index d8d3baf982a..bbd6c0953c3 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -860,16 +860,19 @@ combine_instructions (rtx f, unsigned int nregs) rtx temp = XEXP (links, 0); if ((set = single_set (temp)) != 0 && (note = find_reg_equal_equiv_note (temp)) != 0 - && GET_CODE (XEXP (note, 0)) != EXPR_LIST + && (note = XEXP (note, 0), GET_CODE (note)) != EXPR_LIST /* Avoid using a register that may already been marked dead by an earlier instruction. */ - && ! unmentioned_reg_p (XEXP (note, 0), SET_SRC (set))) + && ! unmentioned_reg_p (note, SET_SRC (set)) + && (GET_MODE (note) == VOIDmode + ? SCALAR_INT_MODE_P (GET_MODE (SET_DEST (set))) + : GET_MODE (SET_DEST (set)) == GET_MODE (note))) { /* Temporarily replace the set's source with the contents of the REG_EQUAL note. The insn will be deleted or recognized by try_combine. */ rtx orig = SET_SRC (set); - SET_SRC (set) = XEXP (note, 0); + SET_SRC (set) = note; next = try_combine (insn, temp, NULL_RTX, &new_direct_jump_p); if (next)