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.