diff options
author | Richard Guenther <rguenther@suse.de> | 2010-09-22 12:15:56 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-09-22 12:15:56 +0000 |
commit | 736fe2d54b355d5d43b3d26b1d40b110a0697b28 (patch) | |
tree | 8d4fae775644247a59913ff0ac0e900b30768e6c /gcc/tree-optimize.c | |
parent | bafa9791ac3a741aae72a6efd998b7d36d2c2e62 (diff) | |
download | gcc-736fe2d54b355d5d43b3d26b1d40b110a0697b28.zip gcc-736fe2d54b355d5d43b3d26b1d40b110a0697b28.tar.gz gcc-736fe2d54b355d5d43b3d26b1d40b110a0697b28.tar.bz2 |
tree-ssanames.c (release_dead_ssa_names): Do not remove callee edges here.
2010-09-22 Richard Guenther <rguenther@suse.de>
* tree-ssanames.c (release_dead_ssa_names): Do not remove
callee edges here.
* passes.c (init_optimization_passes): Remove early CFG cleanup.
* tree-optimize.c (execute_cleanup_cfg_pre_ipa): Remove.
(pass_cleanup_cfg): Likewise.
(execute_fixup_cfg): Cleanup.
* tree-pass.h (pass_cleanup_cfg): Remove.
From-SVN: r164522
Diffstat (limited to 'gcc/tree-optimize.c')
-rw-r--r-- | gcc/tree-optimize.c | 40 |
1 files changed, 4 insertions, 36 deletions
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c index ce18d6f..9487741 100644 --- a/gcc/tree-optimize.c +++ b/gcc/tree-optimize.c @@ -149,37 +149,6 @@ struct gimple_opt_pass pass_all_early_optimizations = } }; -/* Pass: cleanup the CFG just before expanding trees to RTL. - This is just a round of label cleanups and case node grouping - because after the tree optimizers have run such cleanups may - be necessary. */ - -static unsigned int -execute_cleanup_cfg_pre_ipa (void) -{ - cleanup_tree_cfg (); - return 0; -} - -struct gimple_opt_pass pass_cleanup_cfg = -{ - { - GIMPLE_PASS, - "cleanup_cfg", /* name */ - NULL, /* gate */ - execute_cleanup_cfg_pre_ipa, /* execute */ - NULL, /* sub */ - NULL, /* next */ - 0, /* static_pass_number */ - TV_NONE, /* tv_id */ - PROP_cfg, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - TODO_dump_func /* todo_flags_finish */ - } -}; - /* Pass: cleanup the CFG just before expanding trees to RTL. This is just a round of label cleanups and case node grouping @@ -260,7 +229,7 @@ execute_free_datastructures (void) return 0; } -/* Pass: fixup_cfg. IPA passes, compilation of earlier functions or inlining +/* IPA passes, compilation of earlier functions or inlining might have changed some properties, such as marked functions nothrow, pure, const or noreturn. Remove redundant edges and basic blocks, and create new ones if necessary. @@ -306,7 +275,6 @@ execute_fixup_cfg (void) if (gimple_in_ssa_p (cfun)) { todo |= TODO_update_ssa | TODO_cleanup_cfg; - mark_symbols_for_renaming (stmt); update_stmt (stmt); } } @@ -316,11 +284,11 @@ execute_fixup_cfg (void) todo |= TODO_cleanup_cfg; } - maybe_clean_eh_stmt (stmt); + if (maybe_clean_eh_stmt (stmt) + && gimple_purge_dead_eh_edges (bb)) + todo |= TODO_cleanup_cfg; } - if (gimple_purge_dead_eh_edges (bb)) - todo |= TODO_cleanup_cfg; FOR_EACH_EDGE (e, ei, bb->succs) e->count = (e->count * count_scale + REG_BR_PROB_BASE / 2) / REG_BR_PROB_BASE; |