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:
parent
076b460557
commit
789c34e3c7
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue