From: Bernd Schmidt Date: Tue, 19 Jun 2001 14:29:28 +0000 (+0000) Subject: Fix incorrect handling of notes. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=801ad267c40750c0ede617713338e9bf59b1056a;p=thirdparty%2Fgcc.git Fix incorrect handling of notes. From-SVN: r43461 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 627b33f757e9..9a1a03ed7673 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-06-19 Bernd Schmidt + + * regmove.c (optimize_reg_copy_3): Do nothing if previous insn + carries a REG_EQUIV note. If it carries REG_EQUAL, delete the + note. + 2001-05-22 Bernd Schmidt * sparc.md (movsf, movdf): Allow constant to integer reg moves. diff --git a/gcc/regmove.c b/gcc/regmove.c index 800859582c75..27c6d4af12c3 100644 --- a/gcc/regmove.c +++ b/gcc/regmove.c @@ -693,6 +693,9 @@ optimize_reg_copy_3 (insn, dest, src) } if (! (set = single_set (p)) || GET_CODE (SET_SRC (set)) != MEM + /* If there's a REG_EQUIV note, this must be an insn that loads an + argument. Prefer keeping the note over doing this optimization. */ + || find_reg_note (p, REG_EQUIV, NULL_RTX) || SET_DEST (set) != src_reg) return; @@ -737,6 +740,12 @@ optimize_reg_copy_3 (insn, dest, src) PUT_MODE (src_reg, old_mode); XEXP (src, 0) = src_reg; } + else + { + rtx note = find_reg_note (p, REG_EQUAL, NULL_RTX); + if (note) + remove_note (p, note); + } }