From: steven Date: Sun, 18 Feb 2007 22:33:23 +0000 (+0000) Subject: PR rtl-optimization/30773 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=896bc914ac8e2397531e2de2e2ad85a5ac0c7e3e;p=thirdparty%2Fgcc.git PR rtl-optimization/30773 * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init if we fail to attach a REG_EQUIV note. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122106 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c797248648b1..f2aedd45b633 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-02-18 Steven Bosscher + + PR rtl-optimization/30773 + * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init + if we fail to attach a REG_EQUIV note. + 2007-02-18 David Edelsohn Roger Sayle diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index 6f24968f10c8..f46b9c98067e 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -1062,10 +1062,11 @@ update_equiv_regs (void) { rtx init_insn = XEXP (reg_equiv[regno].init_insns, 0); if (validate_equiv_mem (init_insn, src, dest) - && ! memref_used_between_p (dest, init_insn, insn)) + && ! memref_used_between_p (dest, init_insn, insn) + /* Attaching a REG_EQUIV note will fail if INIT_INSN has + multiple sets. */ + && set_unique_reg_note (init_insn, REG_EQUIV, copy_rtx (dest))) { - set_unique_reg_note (init_insn, REG_EQUIV, copy_rtx (dest)); - /* This insn makes the equivalence, not the one initializing the register. */ reg_equiv_init[regno]