tree-optimization/98428 - avoid pre-existing vectors for loop SLP
authorRichard Biener <rguenther@suse.de>
Tue, 5 Jan 2021 13:38:15 +0000 (14:38 +0100)
committerRichard Biener <rguenther@suse.de>
Tue, 5 Jan 2021 15:43:39 +0000 (16:43 +0100)
It wasn't supposed to be enabled and appearantly copying around the
checking messed up the condition.

2021-01-05  Richard Biener  <rguenther@suse.de>

PR tree-optimization/98428
* tree-vect-slp.c (vect_build_slp_tree_1): Properly reject
vector lane extracts for loop vectorization.

gcc/tree-vect-slp.c

index 2c2cf637e734e2d79efec508248651fdc4dfcd87..67aaa7b0a6a728bbca24cda0b4b9058c40f70545 100644 (file)
@@ -1096,11 +1096,10 @@ vect_build_slp_tree_1 (vec_info *vinfo, unsigned char *swap,
                   && rhs_code == BIT_FIELD_REF)
            {
              tree vec = TREE_OPERAND (gimple_assign_rhs1 (stmt), 0);
-             if (TREE_CODE (vec) != SSA_NAME
+             if (!is_a <bb_vec_info> (vinfo)
+                 || TREE_CODE (vec) != SSA_NAME
                  || !types_compatible_p (vectype, TREE_TYPE (vec)))
                {
-                 if (is_a <bb_vec_info> (vinfo) && i != 0)
-                   continue;
                  if (dump_enabled_p ())
                    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
                                     "Build SLP failed: "