From c51d95ecef9cfee1e96789495a5086a84b22ad56 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Fri, 8 Mar 2002 21:32:15 +0100 Subject: cfgrtl.c (purge_dead_edges): Set BB_DRITY flags if edge has been removed; fix return value. * cfgrtl.c (purge_dead_edges): Set BB_DRITY flags if edge has been removed; fix return value. * combine.c (combine_instructions): Dirtify blocks where we failed to update liveness; purge dead edges; use update_life_info_in_dirty_blocks. * toplev.c (rest_of_compilation): Do not purge_dead_edges after combine. From-SVN: r50454 --- gcc/cfgrtl.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'gcc/cfgrtl.c') diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 7e3ebad..6e929eb 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -2108,6 +2108,7 @@ purge_dead_edges (bb) if (e->flags & EDGE_EH) { remove_edge (e); + bb->flags |= BB_DIRTY; purged = true; } } @@ -2121,7 +2122,7 @@ purge_dead_edges (bb) if (!any_condjump_p (insn) && !returnjump_p (insn) && !simplejump_p (insn)) - return false; + return purged; /* Branch probability/prediction notes are defined only for condjumps. We've possibly turned condjump into simplejump. */ @@ -2154,12 +2155,13 @@ purge_dead_edges (bb) && returnjump_p (insn)) continue; + bb->flags |= BB_DIRTY; purged = true; remove_edge (e); } if (!bb->succ || !purged) - return false; + return purged; if (rtl_dump_file) fprintf (rtl_dump_file, "Purged edges from bb %i\n", bb->index); @@ -2206,7 +2208,11 @@ purge_dead_edges (bb) { next = e->succ_next; if (!(e->flags & EDGE_FALLTHRU)) - remove_edge (e), purged = true; + { + bb->flags |= BB_DIRTY; + remove_edge (e); + purged = true; + } } if (!bb->succ || bb->succ->succ_next) -- cgit v1.1