http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49308

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2011.06.07 09:10:25
         AssignedTo|unassigned at gcc dot       |jakub at gcc dot gnu.org
                   |gnu.org                     |
     Ever Confirmed|0                           |1

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-06-07 
09:10:25 UTC ---
--- dce.c.jj        2011-06-06 19:07:08.000000000 +0200
+++ dce.c        2011-06-07 11:08:12.000000000 +0200
@@ -514,11 +514,11 @@ reset_unmarked_insns_debug_uses (void)
               struct df_link *defs;
               for (defs = DF_REF_CHAIN (use); defs; defs = defs->next)
                 {
-                  rtx insn;
+                  rtx ref_insn;
                   if (DF_REF_IS_ARTIFICIAL (defs->ref))
                     continue;
-                  insn = DF_REF_INSN (defs->ref);
-                  if (!marked_insn_p (insn))
+                  ref_insn = DF_REF_INSN (defs->ref);
+                  if (!marked_insn_p (ref_insn))
                     break;
                 }
               if (!defs)
@@ -527,6 +527,7 @@ reset_unmarked_insns_debug_uses (void)
                  each of the DEFs?  */
               INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC ();
               df_insn_rescan_debug_internal (insn);
+              break;
             }
         }
 }

When we reset/rescan the debug insn, obviously no further testing of that insn
is needed and more importantly the old df info isn't valid any longer.

Reply via email to