This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix stmt removal in vectorize_fold_left_reduction (PR tree-optimization/88071)


On Mon, 19 Nov 2018, Jakub Jelinek wrote:

> Hi!
> 
> In these cases the stmts vectorize_fold_left_reduction is removing may have
> EH region of -2 attached to them, but because they are removed with false
> as remove_permanently or update_eh_info, the old stmts are kept in the EH
> tables and cause checking ICE.
> 
> From what I understand, the stmts are really removed permanently, so fixed
> thusly, bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

OK.

Richard.

> 2018-11-19  Jakub Jelinek  <jakub@redhat.com>
> 
> 	PR tree-optimization/88071
> 	* tree-vect-loop.c (vectorize_fold_left_reduction): Pass true instead
> 	of false as last argument to gsi_remove.
> 	* tree-vect-stmts.c (vect_finish_replace_stmt): Pass true instead of
> 	false as last argument to gsi_replace.
> 
> 	* gcc.dg/pr88071.c: New test.
> 
> --- gcc/tree-vect-loop.c.jj	2018-11-16 10:22:20.037235568 +0100
> +++ gcc/tree-vect-loop.c	2018-11-19 11:12:48.463267700 +0100
> @@ -5861,7 +5861,7 @@ vectorize_fold_left_reduction (stmt_vec_
>  	  /* Remove the statement, so that we can use the same code paths
>  	     as for statements that we've just created.  */
>  	  gimple_stmt_iterator tmp_gsi = gsi_for_stmt (new_stmt);
> -	  gsi_remove (&tmp_gsi, false);
> +	  gsi_remove (&tmp_gsi, true);
>  	}
>  
>        if (i == vec_num - 1)
> --- gcc/tree-vect-stmts.c.jj	2018-11-16 10:22:20.061235172 +0100
> +++ gcc/tree-vect-stmts.c	2018-11-19 11:47:41.480260582 +0100
> @@ -1720,7 +1720,7 @@ vect_finish_replace_stmt (stmt_vec_info
>    gcc_assert (gimple_get_lhs (stmt_info->stmt) == gimple_get_lhs (vec_stmt));
>  
>    gimple_stmt_iterator gsi = gsi_for_stmt (stmt_info->stmt);
> -  gsi_replace (&gsi, vec_stmt, false);
> +  gsi_replace (&gsi, vec_stmt, true);
>  
>    return vect_finish_stmt_generation_1 (stmt_info, vec_stmt);
>  }
> --- gcc/testsuite/gcc.dg/pr88071.c.jj	2018-11-19 11:55:11.364945562 +0100
> +++ gcc/testsuite/gcc.dg/pr88071.c	2018-11-19 11:55:05.682037075 +0100
> @@ -0,0 +1,5 @@
> +/* PR tree-optimization/88071 */
> +/* { dg-do compile } */
> +/* { dg-options "-O2 -fexceptions -fnon-call-exceptions -fopenmp-simd -ftrapv -ftree-loop-vectorize" } */
> +
> +#include "gomp/openmp-simd-2.c"
> 
> 	Jakub
> 
> 

-- 
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]