summaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 025e677c396..72f73784d60 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -717,16 +717,22 @@ cleanup_tree_cfg (void)
timevar_push (TV_TREE_CLEANUP_CFG);
- /* These three transformations can cascade, so we iterate on them until
+ retval = cleanup_control_flow ();
+
+ /* These two transformations can cascade, so we iterate on them until
nothing changes. */
while (something_changed)
{
- something_changed = cleanup_control_flow ();
- something_changed |= delete_unreachable_blocks ();
+ something_changed = delete_unreachable_blocks ();
something_changed |= thread_jumps ();
retval |= something_changed;
}
+#ifdef ENABLE_CHECKING
+ if (retval)
+ gcc_assert (!cleanup_control_flow ());
+#endif
+
/* Merging the blocks creates no new opportunities for the other
optimizations, so do it here. */
merge_seq_blocks ();