aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-dce.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2005-10-11 12:18:24 -0700
committerRichard Henderson <rth@gcc.gnu.org>2005-10-11 12:18:24 -0700
commit4989673889a86eb98ffa1045984957e8e6900091 (patch)
tree353917f75a114dab0d531ae6c3d4e0f631715ec8 /gcc/tree-ssa-dce.c
parent5e8b5b0868f23c72e9a4789196c60d076f2ef580 (diff)
downloadgcc-4989673889a86eb98ffa1045984957e8e6900091.zip
gcc-4989673889a86eb98ffa1045984957e8e6900091.tar.gz
gcc-4989673889a86eb98ffa1045984957e8e6900091.tar.bz2
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.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index 8902d2a..6ad8cf2 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 */