OSDN Git Service

PR rtl-optimization/30773
authorsteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 18 Feb 2007 22:33:23 +0000 (22:33 +0000)
committersteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 18 Feb 2007 22:33:23 +0000 (22:33 +0000)
* 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

gcc/ChangeLog
gcc/local-alloc.c

index c797248..f2aedd4 100644 (file)
@@ -1,3 +1,9 @@
+2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
+
+       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  <edelsohn@gnu.org>
            Roger Sayle  <roger@eyesopen.com>
 
index 6f24968..f46b9c9 100644 (file)
@@ -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]