diff options
author | Richard Henderson <rth@redhat.com> | 2005-10-11 12:18:24 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2005-10-11 12:18:24 -0700 |
commit | 4989673889a86eb98ffa1045984957e8e6900091 (patch) | |
tree | 353917f75a114dab0d531ae6c3d4e0f631715ec8 /gcc/tree-ssa-dce.c | |
parent | 5e8b5b0868f23c72e9a4789196c60d076f2ef580 (diff) | |
download | gcc-4989673889a86eb98ffa1045984957e8e6900091.tar.gz |
re PR tree-optimization/24300 (segfault in operand_equal_p with -ftree-vectorize)
PR tree-opt/24300
* Makefile.in (tree-ssa-dce.o): Depend on CFGLOOP_H.
* tree-ssa-dce.c: Include cfgloop.h.
(tree_ssa_dce_loop, pass_dce_loop): New.
* tree-pass.h (pass_dce_loop): Declare it.
* passes.c (init_optimization_passes): Use it.
From-SVN: r105250
Diffstat (limited to 'gcc/tree-ssa-dce.c')
-rw-r--r-- | gcc/tree-ssa-dce.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c index 8902d2a2e0a..6ad8cf26e5a 100644 --- a/gcc/tree-ssa-dce.c +++ b/gcc/tree-ssa-dce.c @@ -64,6 +64,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "tree-pass.h" #include "timevar.h" #include "flags.h" +#include "cfgloop.h" static struct stmt_stats { @@ -942,6 +943,13 @@ tree_ssa_dce (void) } static void +tree_ssa_dce_loop (void) +{ + perform_tree_ssa_dce (/*aggressive=*/false); + free_numbers_of_iterations_estimates (current_loops); +} + +static void tree_ssa_cd_dce (void) { perform_tree_ssa_dce (/*aggressive=*/optimize >= 2); @@ -974,6 +982,26 @@ struct tree_opt_pass pass_dce = 0 /* letter */ }; +struct tree_opt_pass pass_dce_loop = +{ + "dceloop", /* name */ + gate_dce, /* gate */ + tree_ssa_dce_loop, /* execute */ + NULL, /* sub */ + NULL, /* next */ + 0, /* static_pass_number */ + TV_TREE_DCE, /* tv_id */ + PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_dump_func + | TODO_update_ssa_no_phi + | TODO_cleanup_cfg + | TODO_verify_ssa, /* todo_flags_finish */ + 0 /* letter */ +}; + struct tree_opt_pass pass_cd_dce = { "cddce", /* name */ |