diff options
Diffstat (limited to 'gcc/tree-ssa-tail-merge.c')
-rw-r--r-- | gcc/tree-ssa-tail-merge.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c index f717bb2..fd33380 100644 --- a/gcc/tree-ssa-tail-merge.c +++ b/gcc/tree-ssa-tail-merge.c @@ -1724,7 +1724,7 @@ update_debug_stmts (void) /* Runs tail merge optimization. */ unsigned int -tail_merge_optimize (unsigned int todo) +tail_merge_optimize (unsigned int todo, bool need_crit_edge_split) { int nr_bbs_removed_total = 0; int nr_bbs_removed; @@ -1738,15 +1738,9 @@ tail_merge_optimize (unsigned int todo) timevar_push (TV_TREE_TAIL_MERGE); - /* We enter from PRE which has critical edges split. Elimination - does not process trivially dead code so cleanup the CFG if we - are told so. And re-split critical edges then. */ - if (todo & TODO_cleanup_cfg) - { - cleanup_tree_cfg (); - todo &= ~TODO_cleanup_cfg; - split_edges_for_insertion (); - } + /* Re-split critical edges when PRE did a CFG cleanup. */ + if (need_crit_edge_split) + split_edges_for_insertion (); if (!dom_info_available_p (CDI_DOMINATORS)) { |