Commit 789c34e3 by Richard Biener Committed by Richard Biener

tree-ssa-loop-manip.c (find_uses_to_rename): Do not scan the whole function when…

tree-ssa-loop-manip.c (find_uses_to_rename): Do not scan the whole function when there is nothing to do.

2013-03-18  Richard Biener  <rguenther@suse.de>

	* tree-ssa-loop-manip.c (find_uses_to_rename): Do not scan the
	whole function when there is nothing to do.
	* tree-ssa-loop.c (pass_vectorize): Remove TODO_update_ssa.
	* tree-vectorizer.c (vectorize_loops): Update virtual and
	loop-closed SSA once.
	* tree-vect-loop.c (vect_transform_loop): Do not update SSA here.

From-SVN: r196770
parent 076b4605
2013-03-18 Richard Biener <rguenther@suse.de>
* tree-ssa-loop-manip.c (find_uses_to_rename): Do not scan the
whole function when there is nothing to do.
* tree-ssa-loop.c (pass_vectorize): Remove TODO_update_ssa.
* tree-vectorizer.c (vectorize_loops): Update virtual and
loop-closed SSA once.
* tree-vect-loop.c (vect_transform_loop): Do not update SSA here.
2013-03-18 Richard Biener <rguenther@suse.de>
PR middle-end/56113
* domwalk.c (bb_postorder): New global static.
(cmp_bb_postorder): New function.
......
......@@ -443,21 +443,12 @@ find_uses_to_rename (bitmap changed_bbs, bitmap *use_blocks, bitmap need_phis)
unsigned index;
bitmap_iterator bi;
/* ??? If CHANGED_BBS is empty we rewrite the whole function -- why? */
if (changed_bbs && !bitmap_empty_p (changed_bbs))
{
EXECUTE_IF_SET_IN_BITMAP (changed_bbs, 0, index, bi)
{
find_uses_to_rename_bb (BASIC_BLOCK (index), use_blocks, need_phis);
}
}
if (changed_bbs)
EXECUTE_IF_SET_IN_BITMAP (changed_bbs, 0, index, bi)
find_uses_to_rename_bb (BASIC_BLOCK (index), use_blocks, need_phis);
else
{
FOR_EACH_BB (bb)
{
find_uses_to_rename_bb (bb, use_blocks, need_phis);
}
}
FOR_EACH_BB (bb)
find_uses_to_rename_bb (bb, use_blocks, need_phis);
}
/* Rewrites the program into a loop closed ssa form -- i.e. inserts extra
......
......@@ -245,8 +245,7 @@ struct gimple_opt_pass pass_vectorize =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
TODO_update_ssa
| TODO_ggc_collect /* todo_flags_finish */
TODO_ggc_collect /* todo_flags_finish */
}
};
......
......@@ -5773,11 +5773,6 @@ vect_transform_loop (loop_vec_info loop_vinfo)
loop->nb_iterations_estimate = loop->nb_iterations_estimate - double_int_one;
}
/* The memory tags and pointers in vectorized statements need to
have their SSA forms updated. FIXME, why can't this be delayed
until all the loops have been transformed? */
update_ssa (TODO_update_ssa);
if (dump_enabled_p ())
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location, "LOOP VECTORIZED.");
if (loop->inner && dump_enabled_p ())
......
......@@ -149,7 +149,16 @@ vectorize_loops (void)
free_stmt_vec_info_vec ();
return num_vectorized_loops > 0 ? TODO_cleanup_cfg : 0;
if (num_vectorized_loops > 0)
{
/* If we vectorized any loop only virtual SSA form needs to be updated.
??? Also while we try hard to update loop-closed SSA form we fail
to properly do this in some corner-cases (see PR56286). */
rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa_only_virtuals);
return TODO_cleanup_cfg;
}
return 0;
}
......
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