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
This commit is contained in:
Richard Biener 2013-03-18 08:50:35 +00:00 committed by Richard Biener
parent 076b460557
commit 789c34e3c7
5 changed files with 25 additions and 22 deletions

View File

@ -1,3 +1,12 @@
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

View File

@ -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

View File

@ -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 */
}
};

View File

@ -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 ())

View File

@ -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;
}