diff mbox series

Fix PR91982

Message ID nycvar.YFH.7.76.1910041116370.5566@zhemvz.fhfr.qr
State New
Headers show
Series Fix PR91982 | expand

Commit Message

Richard Biener Oct. 4, 2019, 9:17 a.m. UTC
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2019-10-04  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/91982
	* tree-vect-loop.c (vectorizable_live_operation): Also guard
	against EXTRACT_LAST_REDUCTION.
	* tree-vect-stmts.c (vect_transform_stmt): Likewise.
diff mbox series

Patch

Index: gcc/tree-vect-loop.c
===================================================================
--- gcc/tree-vect-loop.c	(revision 276564)
+++ gcc/tree-vect-loop.c	(working copy)
@@ -7901,7 +7901,10 @@  vectorizable_live_operation (stmt_vec_in
 	return true;
       if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_reduction_def)
 	{
-	  if (STMT_VINFO_REDUC_TYPE (stmt_info) == FOLD_LEFT_REDUCTION)
+	  if (STMT_VINFO_REDUC_TYPE (stmt_info) == FOLD_LEFT_REDUCTION
+	      || (STMT_VINFO_REDUC_TYPE (stmt_info) == COND_REDUCTION
+		  && (STMT_VINFO_VEC_REDUCTION_TYPE (stmt_info)
+		      == EXTRACT_LAST_REDUCTION)))
 	    return true;
 	  if (slp_node)
 	    {
Index: gcc/tree-vect-stmts.c
===================================================================
--- gcc/tree-vect-stmts.c	(revision 276564)
+++ gcc/tree-vect-stmts.c	(working copy)
@@ -10897,6 +10897,9 @@  vect_transform_stmt (stmt_vec_info stmt_
   stmt_vec_info orig_stmt_info = vect_orig_stmt (stmt_info);
   if (!slp_node && STMT_VINFO_REDUC_DEF (orig_stmt_info)
       && STMT_VINFO_REDUC_TYPE (orig_stmt_info) != FOLD_LEFT_REDUCTION
+      && (STMT_VINFO_REDUC_TYPE (orig_stmt_info) != COND_REDUCTION
+	  || (STMT_VINFO_VEC_REDUCTION_TYPE (orig_stmt_info)
+	      != EXTRACT_LAST_REDUCTION))
       && is_a <gphi *> (STMT_VINFO_REDUC_DEF (orig_stmt_info)->stmt))
     {
       gphi *phi = as_a <gphi *> (STMT_VINFO_REDUC_DEF (orig_stmt_info)->stmt);