diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 491128e1aa7..0b2a3be3225 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-10-29 Alexandre Oliva + + PR debug/54693 + * gcc/valtrack.c (dead_debug_insert_temp): Defer rescan of + newly-emitted debug insn. + 2012-10-29 Alexandre Oliva PR debug/54693 diff --git a/gcc/valtrack.c b/gcc/valtrack.c index f6c0db473bb..8cc326900ed 100644 --- a/gcc/valtrack.c +++ b/gcc/valtrack.c @@ -688,7 +688,9 @@ dead_debug_insert_temp (struct dead_debug_local *debug, unsigned int uregno, bind = emit_debug_insn_after (bind, insn); else bind = emit_debug_insn_before (bind, insn); - df_insn_rescan (bind); + if (debug->to_rescan == NULL) + debug->to_rescan = BITMAP_ALLOC (NULL); + bitmap_set_bit (debug->to_rescan, INSN_UID (bind)); /* Adjust all uses. */ while ((cur = uses)) @@ -699,8 +701,6 @@ dead_debug_insert_temp (struct dead_debug_local *debug, unsigned int uregno, *DF_REF_REAL_LOC (cur->use) = gen_lowpart_SUBREG (GET_MODE (*DF_REF_REAL_LOC (cur->use)), dval); /* ??? Should we simplify subreg of subreg? */ - if (debug->to_rescan == NULL) - debug->to_rescan = BITMAP_ALLOC (NULL); bitmap_set_bit (debug->to_rescan, INSN_UID (DF_REF_INSN (cur->use))); uses = cur->next; XDELETE (cur);