diff options
Diffstat (limited to 'gcc/tree-ssa-dce.c')
-rw-r--r-- | gcc/tree-ssa-dce.c | 58 |
1 files changed, 6 insertions, 52 deletions
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c index 4969b11..171d216 100644 --- a/gcc/tree-ssa-dce.c +++ b/gcc/tree-ssa-dce.c @@ -1479,7 +1479,12 @@ perform_tree_ssa_dce (bool aggressive) tree_dce_done (aggressive); if (something_changed) - return TODO_update_ssa | TODO_cleanup_cfg; + { + free_numbers_of_iterations_estimates (); + if (scev_initialized_p) + scev_reset (); + return TODO_update_ssa | TODO_cleanup_cfg; + } return 0; } @@ -1491,19 +1496,6 @@ tree_ssa_dce (void) } static unsigned int -tree_ssa_dce_loop (void) -{ - unsigned int todo; - todo = perform_tree_ssa_dce (/*aggressive=*/false); - if (todo) - { - free_numbers_of_iterations_estimates (); - scev_reset (); - } - return todo; -} - -static unsigned int tree_ssa_cd_dce (void) { return perform_tree_ssa_dce (/*aggressive=*/optimize >= 2); @@ -1549,44 +1541,6 @@ make_pass_dce (gcc::context *ctxt) namespace { -const pass_data pass_data_dce_loop = -{ - GIMPLE_PASS, /* type */ - "dceloop", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_execute */ - TV_TREE_DCE, /* tv_id */ - ( PROP_cfg | PROP_ssa ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_dce_loop : public gimple_opt_pass -{ -public: - pass_dce_loop (gcc::context *ctxt) - : gimple_opt_pass (pass_data_dce_loop, ctxt) - {} - - /* opt_pass methods: */ - opt_pass * clone () { return new pass_dce_loop (m_ctxt); } - virtual bool gate (function *) { return flag_tree_dce != 0; } - virtual unsigned int execute (function *) { return tree_ssa_dce_loop (); } - -}; // class pass_dce_loop - -} // anon namespace - -gimple_opt_pass * -make_pass_dce_loop (gcc::context *ctxt) -{ - return new pass_dce_loop (ctxt); -} - -namespace { - const pass_data pass_data_cd_dce = { GIMPLE_PASS, /* type */ |