diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/df-core.c | 23 | ||||
-rw-r--r-- | gcc/df-scan.c | 4 | ||||
-rw-r--r-- | gcc/df.h | 1 |
4 files changed, 8 insertions, 27 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ee27611..d09a985 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-11-13 Alexandre Oliva <aoliva@redhat.com> + + PR debug/42889 + * df-scan.c (df_insn_rescan): Don't mark BBs upon debug insns. + * df-core.c (df_set_bb_dirty_nonrl): Remove. + * df.h (df_set_bb_dirty_nonlr): Likewise. + 2010-11-13 Uros Bizjak <ubizjak@gmail.com> * config/mips/mips.md (call_internal): Pass curr_insn to diff --git a/gcc/df-core.c b/gcc/df-core.c index 181c1e7..86ed239 100644 --- a/gcc/df-core.c +++ b/gcc/df-core.c @@ -1427,29 +1427,6 @@ df_set_bb_dirty (basic_block bb) } -/* Mark BB as needing it's transfer functions as being out of - date, except for LR problem. Used when analyzing DEBUG_INSNs, - as LR problem can trigger DCE, and DEBUG_INSNs shouldn't ever - shorten or enlarge lifetime of regs. */ - -void -df_set_bb_dirty_nonlr (basic_block bb) -{ - if (df) - { - int p; - for (p = 1; p < df->num_problems_defined; p++) - { - struct dataflow *dflow = df->problems_in_order[p]; - if (dflow == df_lr) - continue; - if (dflow->out_of_date_transfer_functions) - bitmap_set_bit (dflow->out_of_date_transfer_functions, bb->index); - dflow->solutions_dirty = true; - } - } -} - /* Grow the bb_info array. */ void diff --git a/gcc/df-scan.c b/gcc/df-scan.c index b2b88b5..850f067 100644 --- a/gcc/df-scan.c +++ b/gcc/df-scan.c @@ -1261,9 +1261,7 @@ df_insn_rescan (rtx insn) } df_refs_add_to_chains (&collection_rec, bb, insn); - if (DEBUG_INSN_P (insn)) - df_set_bb_dirty_nonlr (bb); - else + if (!DEBUG_INSN_P (insn)) df_set_bb_dirty (bb); VEC_free (df_ref, stack, collection_rec.def_vec); @@ -897,7 +897,6 @@ extern void df_simple_dataflow (enum df_flow_dir, df_init_function, extern void df_mark_solutions_dirty (void); extern bool df_get_bb_dirty (basic_block); extern void df_set_bb_dirty (basic_block); -extern void df_set_bb_dirty_nonlr (basic_block); extern void df_compact_blocks (void); extern void df_bb_replace (int, basic_block); extern void df_bb_delete (int); |