Commit 8fe07c42 by Richard Henderson Committed by Richard Henderson

tree-pass.h (pass_vect_dce): Declare.

        * tree-pass.h (pass_vect_dce): Declare.
        * passes.c (init_optimization_passes): Add it.
        * tree-flow.h (tree_ssa_dce): Declare.
        * tree-ssa-dce.c (tree_ssa_dce): Export.
        * tree-ssa-loop.c (tree_vectorize): Move current_loops check ...
        (gate_tree_vectorize): ... here.
        (pass_vect_dce): New.

From-SVN: r104376
parent 0856ee98
2005-09-17 Richard Henderson <rth@redhat.com>
* tree-pass.h (pass_vect_dce): Declare.
* passes.c (init_optimization_passes): Add it.
* tree-flow.h (tree_ssa_dce): Declare.
* tree-ssa-dce.c (tree_ssa_dce): Export.
* tree-ssa-loop.c (tree_vectorize): Move current_loops check ...
(gate_tree_vectorize): ... here.
(pass_vect_dce): New.
2005-09-17 Jan Hubicka <jh@suse.cz> 2005-09-17 Jan Hubicka <jh@suse.cz>
* except.c (struct eh_status): Turn region_array into vec. * except.c (struct eh_status): Turn region_array into vec.
......
...@@ -567,6 +567,7 @@ init_optimization_passes (void) ...@@ -567,6 +567,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_iv_canon); NEXT_PASS (pass_iv_canon);
NEXT_PASS (pass_if_conversion); NEXT_PASS (pass_if_conversion);
NEXT_PASS (pass_vectorize); NEXT_PASS (pass_vectorize);
NEXT_PASS (pass_vect_dce);
/* NEXT_PASS (pass_may_alias) cannot be done again because the /* NEXT_PASS (pass_may_alias) cannot be done again because the
vectorizer creates alias relations that are not supported by vectorizer creates alias relations that are not supported by
pass_may_alias. */ pass_may_alias. */
......
...@@ -707,6 +707,9 @@ struct tree_niter_desc ...@@ -707,6 +707,9 @@ struct tree_niter_desc
the loop), then the information would be lost. */ the loop), then the information would be lost. */
}; };
/* In tree-ssa-dce.c */
void tree_ssa_dce (void);
/* In tree-vectorizer.c */ /* In tree-vectorizer.c */
void vectorize_loops (struct loops *); void vectorize_loops (struct loops *);
......
...@@ -234,6 +234,7 @@ extern struct tree_opt_pass pass_empty_loop; ...@@ -234,6 +234,7 @@ extern struct tree_opt_pass pass_empty_loop;
extern struct tree_opt_pass pass_record_bounds; extern struct tree_opt_pass pass_record_bounds;
extern struct tree_opt_pass pass_if_conversion; extern struct tree_opt_pass pass_if_conversion;
extern struct tree_opt_pass pass_vectorize; extern struct tree_opt_pass pass_vectorize;
extern struct tree_opt_pass pass_vect_dce;
extern struct tree_opt_pass pass_complete_unroll; extern struct tree_opt_pass pass_complete_unroll;
extern struct tree_opt_pass pass_iv_optimize; extern struct tree_opt_pass pass_iv_optimize;
extern struct tree_opt_pass pass_tree_loop_done; extern struct tree_opt_pass pass_tree_loop_done;
......
...@@ -935,7 +935,7 @@ perform_tree_ssa_dce (bool aggressive) ...@@ -935,7 +935,7 @@ perform_tree_ssa_dce (bool aggressive)
} }
/* Pass entry points. */ /* Pass entry points. */
static void void
tree_ssa_dce (void) tree_ssa_dce (void)
{ {
perform_tree_ssa_dce (/*aggressive=*/false); perform_tree_ssa_dce (/*aggressive=*/false);
......
...@@ -188,16 +188,13 @@ struct tree_opt_pass pass_tree_unswitch = ...@@ -188,16 +188,13 @@ struct tree_opt_pass pass_tree_unswitch =
static void static void
tree_vectorize (void) tree_vectorize (void)
{ {
if (!current_loops)
return;
vectorize_loops (current_loops); vectorize_loops (current_loops);
} }
static bool static bool
gate_tree_vectorize (void) gate_tree_vectorize (void)
{ {
return flag_tree_vectorize != 0; return flag_tree_vectorize && current_loops;
} }
struct tree_opt_pass pass_vectorize = struct tree_opt_pass pass_vectorize =
...@@ -217,6 +214,26 @@ struct tree_opt_pass pass_vectorize = ...@@ -217,6 +214,26 @@ struct tree_opt_pass pass_vectorize =
0 /* letter */ 0 /* letter */
}; };
struct tree_opt_pass pass_vect_dce =
{
"vect_dce", /* name */
gate_tree_vectorize, /* gate */
tree_ssa_dce, /* 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_ggc_collect
| TODO_verify_ssa, /* todo_flags_finish */
0 /* letter */
};
/* Loop nest optimizations. */ /* Loop nest optimizations. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment