* [PATCH] Fix ???s in find_uses_to_rename and vect_transform_loop
@ 2013-02-11 15:46 Richard Biener
2013-03-18 8:52 ` Richard Biener
0 siblings, 1 reply; 2+ messages in thread
From: Richard Biener @ 2013-02-11 15:46 UTC (permalink / raw)
To: gcc-patches
This fixes the compile-time sink in find_uses_to_rename, that we
scan the whole function when nothing is to do (well, appearantly).
-O3 bootstrap and regtest on x86_64-unknown-linux-gnu in progress,
scheduled for stage1.
Richard.
2013-02-11 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.
Index: gcc/tree-ssa-loop-manip.c
===================================================================
*** gcc/tree-ssa-loop-manip.c (revision 195940)
--- gcc/tree-ssa-loop-manip.c (working copy)
*************** find_uses_to_rename (bitmap changed_bbs,
*** 443,463 ****
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);
! }
! }
else
! {
! 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
--- 443,454 ----
unsigned index;
bitmap_iterator bi;
! 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);
}
/* Rewrites the program into a loop closed ssa form -- i.e. inserts extra
Index: gcc/tree-ssa-loop.c
===================================================================
*** gcc/tree-ssa-loop.c (revision 195940)
--- gcc/tree-ssa-loop.c (working copy)
*************** struct gimple_opt_pass pass_vectorize =
*** 242,249 ****
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
! TODO_update_ssa
! | TODO_ggc_collect /* todo_flags_finish */
}
};
--- 242,248 ----
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
! TODO_ggc_collect /* todo_flags_finish */
}
};
Index: gcc/tree-vectorizer.c
===================================================================
*** gcc/tree-vectorizer.c (revision 195940)
--- gcc/tree-vectorizer.c (working copy)
*************** vectorize_loops (void)
*** 149,155 ****
free_stmt_vec_info_vec ();
! return num_vectorized_loops > 0 ? TODO_cleanup_cfg : 0;
}
--- 149,164 ----
free_stmt_vec_info_vec ();
! 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;
}
Index: gcc/tree-vect-loop.c
===================================================================
*** gcc/tree-vect-loop.c (revision 195940)
--- gcc/tree-vect-loop.c (working copy)
*************** vect_transform_loop (loop_vec_info loop_
*** 5763,5773 ****
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 ())
--- 5763,5768 ----
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] Fix ???s in find_uses_to_rename and vect_transform_loop
2013-02-11 15:46 [PATCH] Fix ???s in find_uses_to_rename and vect_transform_loop Richard Biener
@ 2013-03-18 8:52 ` Richard Biener
0 siblings, 0 replies; 2+ messages in thread
From: Richard Biener @ 2013-03-18 8:52 UTC (permalink / raw)
To: Richard Biener; +Cc: gcc-patches
On Mon, Feb 11, 2013 at 4:45 PM, Richard Biener <rguenther@suse.de> wrote:
>
> This fixes the compile-time sink in find_uses_to_rename, that we
> scan the whole function when nothing is to do (well, appearantly).
>
> -O3 bootstrap and regtest on x86_64-unknown-linux-gnu in progress,
> scheduled for stage1.
Committed as r196770.
Richard.
> Richard.
>
> 2013-02-11 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.
>
> Index: gcc/tree-ssa-loop-manip.c
> ===================================================================
> *** gcc/tree-ssa-loop-manip.c (revision 195940)
> --- gcc/tree-ssa-loop-manip.c (working copy)
> *************** find_uses_to_rename (bitmap changed_bbs,
> *** 443,463 ****
> 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);
> ! }
> ! }
> else
> ! {
> ! 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
> --- 443,454 ----
> unsigned index;
> bitmap_iterator bi;
>
> ! 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);
> }
>
> /* Rewrites the program into a loop closed ssa form -- i.e. inserts extra
> Index: gcc/tree-ssa-loop.c
> ===================================================================
> *** gcc/tree-ssa-loop.c (revision 195940)
> --- gcc/tree-ssa-loop.c (working copy)
> *************** struct gimple_opt_pass pass_vectorize =
> *** 242,249 ****
> 0, /* properties_provided */
> 0, /* properties_destroyed */
> 0, /* todo_flags_start */
> ! TODO_update_ssa
> ! | TODO_ggc_collect /* todo_flags_finish */
> }
> };
>
> --- 242,248 ----
> 0, /* properties_provided */
> 0, /* properties_destroyed */
> 0, /* todo_flags_start */
> ! TODO_ggc_collect /* todo_flags_finish */
> }
> };
>
> Index: gcc/tree-vectorizer.c
> ===================================================================
> *** gcc/tree-vectorizer.c (revision 195940)
> --- gcc/tree-vectorizer.c (working copy)
> *************** vectorize_loops (void)
> *** 149,155 ****
>
> free_stmt_vec_info_vec ();
>
> ! return num_vectorized_loops > 0 ? TODO_cleanup_cfg : 0;
> }
>
>
> --- 149,164 ----
>
> free_stmt_vec_info_vec ();
>
> ! 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;
> }
>
>
> Index: gcc/tree-vect-loop.c
> ===================================================================
> *** gcc/tree-vect-loop.c (revision 195940)
> --- gcc/tree-vect-loop.c (working copy)
> *************** vect_transform_loop (loop_vec_info loop_
> *** 5763,5773 ****
> 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 ())
> --- 5763,5768 ----
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-03-18 8:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-11 15:46 [PATCH] Fix ???s in find_uses_to_rename and vect_transform_loop Richard Biener
2013-03-18 8:52 ` Richard Biener
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).