aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgrtl.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2002-03-08 21:32:15 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2002-03-08 20:32:15 +0000
commitc51d95ecef9cfee1e96789495a5086a84b22ad56 (patch)
tree84fa304edc2ca3262e1d32784341ca2852d908ad /gcc/cfgrtl.c
parent3b25fbfeafe195ba777acedd7b79d5b74ff8927e (diff)
downloadgcc-c51d95ecef9cfee1e96789495a5086a84b22ad56.zip
gcc-c51d95ecef9cfee1e96789495a5086a84b22ad56.tar.gz
gcc-c51d95ecef9cfee1e96789495a5086a84b22ad56.tar.bz2
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
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r--gcc/cfgrtl.c12
1 files changed, 9 insertions, 3 deletions
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)