aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/df-core.c23
-rw-r--r--gcc/df-scan.c4
-rw-r--r--gcc/df.h1
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);
diff --git a/gcc/df.h b/gcc/df.h
index e52cc0e..f268289 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -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);