On 8/12/19 2:14 PM, Matthew Beliveau wrote:
> This patch improves DSE to handle missing optimizations for zero
> initializations.
> 
> Thank you,
> Matthew Beliveau
> 
> 
> DSE.patch
> 
> Bootstrapped/regtested on x86_64-linux, ok for trunk?
> 
> 2019-08-12  Matthew Beliveau  <mbeli...@redhat.com>
> 
>       PR c++/DSE.patch
>       * tree-ssa-dse.c (dse_optimize_redundant_stores): Improved check to
>       catch more redundant zero initalization cases.
>       (dse_dom_walker::dse_optimize_stmt): Improved check to catch more
>       redundant zero initialization cases.
> 
>       * gcc.dg/tree-ssa/redundant-assign-zero-1.c: New test.
>       * gcc.dg/tree-ssa/redundant-assign-zero-2.c: New test.
> 
> @@ -1027,15 +1024,13 @@ dse_dom_walker::dse_optimize_stmt 
> (gimple_stmt_iterator *gsi)
>      {
>        bool by_clobber_p = false;
>  
> -      /* First see if this store is a CONSTRUCTOR and if there
> -      are subsequent CONSTRUCTOR stores which are totally
> -      subsumed by this statement.  If so remove the subsequent
> -      CONSTRUCTOR store.
> +      /* Check if this store initalizes zero, or some aggregate of zeros,
> +      and check if there are subsequent stores which are subsumed by this
> +      statement.  If so, remove the subsequent store.
Perhaps...

/* Check if this statement stores zero to a memory location
   and if there is a subsequent store of zero to the same
   memory location.  If so delete the subsequent store.  */


With the ChangeLog nits noted by Marek and the comment fix this is fine
for the trunk.

jeff

Reply via email to