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>
* except.c (struct eh_status): Turn region_array into vec.
......
......@@ -567,6 +567,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_iv_canon);
NEXT_PASS (pass_if_conversion);
NEXT_PASS (pass_vectorize);
NEXT_PASS (pass_vect_dce);
/* NEXT_PASS (pass_may_alias) cannot be done again because the
vectorizer creates alias relations that are not supported by
pass_may_alias. */
......
......@@ -707,6 +707,9 @@ struct tree_niter_desc
the loop), then the information would be lost. */
};
/* In tree-ssa-dce.c */
void tree_ssa_dce (void);
/* In tree-vectorizer.c */
void vectorize_loops (struct loops *);
......
......@@ -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_if_conversion;
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_iv_optimize;
extern struct tree_opt_pass pass_tree_loop_done;
......
......@@ -935,7 +935,7 @@ perform_tree_ssa_dce (bool aggressive)
}
/* Pass entry points. */
static void
void
tree_ssa_dce (void)
{
perform_tree_ssa_dce (/*aggressive=*/false);
......
......@@ -188,16 +188,13 @@ struct tree_opt_pass pass_tree_unswitch =
static void
tree_vectorize (void)
{
if (!current_loops)
return;
vectorize_loops (current_loops);
}
static bool
gate_tree_vectorize (void)
{
return flag_tree_vectorize != 0;
return flag_tree_vectorize && current_loops;
}
struct tree_opt_pass pass_vectorize =
......@@ -217,6 +214,26 @@ struct tree_opt_pass pass_vectorize =
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. */
......
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