re PR rtl-optimization/42889 ("-fcompare-debug failure (length)" with "-O1 -fgcse")

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.

From-SVN: r166719
This commit is contained in:
Alexandre Oliva 2010-11-13 18:51:57 +00:00 committed by Alexandre Oliva
parent 44538c626c
commit f9aeaebf75
4 changed files with 8 additions and 27 deletions

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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);