diff --git a/gcc/ChangeLog b/gcc/ChangeLog index acf8454abf124e5ff8a757509626c9960deb19ea..fcfbfdccee9b674d6326ee8f2d10295afc0f906b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-04-04 Roger Sayle <roger@eyesopen.com> + + * cse.c (cse_insn): Correct usage of simplify_replace_rtx when + updating the REG_EQUAL note on an insn's libcall_insn. + 2004-04-04 Roger Sayle <roger@eyesopen.com> * df.h: Tidy up whitespace in the definitions of the DF_ flags. diff --git a/gcc/cse.c b/gcc/cse.c index 38f6ef06004634b7f0ba3a3b427d31ef55eba9b1..0a7281ecc426b4bbe75c00eabd4b714e6b19faa9 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -5402,8 +5402,13 @@ cse_insn (rtx insn, rtx libcall_insn) && (GET_CODE (sets[i].orig_src) == REG || GET_CODE (sets[i].orig_src) == SUBREG || GET_CODE (sets[i].orig_src) == MEM)) - simplify_replace_rtx (REG_NOTES (libcall_insn), - sets[i].orig_src, copy_rtx (new)); + { + rtx note = find_reg_equal_equiv_note (libcall_insn); + if (note != 0) + XEXP (note, 0) = simplify_replace_rtx (XEXP (note, 0), + sets[i].orig_src, + copy_rtx (new)); + } /* The result of apply_change_group can be ignored; see canon_reg. */