diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e29ed31ff01..bf52ce8d1f1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2006-11-12 Zdenek Dvorak + + * tree-ssa-loop.c (tree_vectorize): Return the result of + vectorize_loops. + * tree-vectorizer.c (vectorize_loops): Return TODO_cleanup_cfg + if anything changed. + * tree-vectorizer.h (vectorize_loops): Declaration removed. + * tree-flow.h (vectorize_loops): Declaration changed. + 2006-11-12 Zdenek Dvorak * tree-ssa-loop-prefetch.c (schedule_prefetches): Cleanup and improve diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index a880c3299e3..8013804f797 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -801,7 +801,7 @@ struct tree_niter_desc }; /* In tree-vectorizer.c */ -void vectorize_loops (struct loops *); +unsigned vectorize_loops (struct loops *); extern bool vect_can_force_dr_alignment_p (tree, unsigned int); extern tree get_vectype_for_scalar_type (tree); diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c index f647cdcdd27..e415448ae5b 100644 --- a/gcc/tree-ssa-loop.c +++ b/gcc/tree-ssa-loop.c @@ -189,8 +189,7 @@ struct tree_opt_pass pass_tree_unswitch = static unsigned int tree_vectorize (void) { - vectorize_loops (current_loops); - return 0; + return vectorize_loops (current_loops); } static bool diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index c35fc302597..d5b33d6cdc6 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -2151,7 +2151,7 @@ vect_is_simple_iv_evolution (unsigned loop_nb, tree access_fn, tree * init, Entry Point to loop vectorization phase. */ -void +unsigned vectorize_loops (struct loops *loops) { unsigned int i; @@ -2209,4 +2209,6 @@ vectorize_loops (struct loops *loops) destroy_loop_vec_info (loop_vinfo); loop->aux = NULL; } + + return num_vectorized_loops > 0 ? TODO_cleanup_cfg : 0; } diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index b56f7ded95c..55e13776266 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -345,8 +345,6 @@ extern bool supportable_widening_operation (enum tree_code, tree, tree, extern loop_vec_info new_loop_vec_info (struct loop *loop); extern void destroy_loop_vec_info (loop_vec_info); extern stmt_vec_info new_stmt_vec_info (tree stmt, loop_vec_info); -/* Main driver. */ -extern void vectorize_loops (struct loops *); /** In tree-vect-analyze.c **/