public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [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).