[PATCH] tree-optimization/98180 - fix BIT_INSERT_EXPR sequence vectorization

Richard Biener rguenther@suse.de
Tue Dec 8 08:44:13 GMT 2020


This adds a missing check for the first inserted value.

Bootstrapped / tested on x86_64-unknown-linux-gnu, pushed.

2020-12-08  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/98180
	* tree-vect-slp.c (vect_slp_check_for_constructors): Check the
	first inserted value has a def.
---
 gcc/tree-vect-slp.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index 2dccca02aa0..a2757e707ff 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -4193,10 +4193,12 @@ vect_slp_check_for_constructors (bb_vec_info bb_vinfo)
       else if (gimple_assign_rhs_code (assign) == BIT_INSERT_EXPR
 	       && VECTOR_TYPE_P (TREE_TYPE (rhs))
 	       && TYPE_VECTOR_SUBPARTS (TREE_TYPE (rhs)).is_constant ()
+	       && TYPE_VECTOR_SUBPARTS (TREE_TYPE (rhs)).to_constant () > 1
 	       && integer_zerop (gimple_assign_rhs3 (assign))
 	       && useless_type_conversion_p
 		    (TREE_TYPE (TREE_TYPE (rhs)),
-		     TREE_TYPE (gimple_assign_rhs2 (assign))))
+		     TREE_TYPE (gimple_assign_rhs2 (assign)))
+	       && bb_vinfo->lookup_def (gimple_assign_rhs2 (assign)))
 	{
 	  /* We start to match on insert to lane zero but since the
 	     inserts need not be ordered we'd have to search both
-- 
2.26.2


More information about the Gcc-patches mailing list