Always use SLP vector defs to determine insertion place
authorRichard Biener <rguenther@suse.de>
Thu, 25 Jun 2020 11:41:47 +0000 (13:41 +0200)
committerRichard Biener <rguenther@suse.de>
Thu, 25 Jun 2020 11:44:38 +0000 (13:44 +0200)
With the last vectorizable_shift patch we can now always use the
SLP vector defs to determine the vectorized stmt insertion place,
paving the way for a "verifier" for pending restructuring and
BB vectorization of reductions and other live stmts.

2020-06-25  Richard Biener  <rguenther@suse.de>

* tree-vect-slp.c (vect_schedule_slp_instance): Always use
vector defs to determine insertion place.

gcc/tree-vect-slp.c

index b2792c7..5883ec5 100644 (file)
@@ -4262,13 +4262,6 @@ vect_schedule_slp_instance (vec_info *vinfo,
   else if (SLP_TREE_CHILDREN (node).is_empty ())
     /* This happens for reduction PHIs.  */
     si = gsi_for_stmt (vect_find_last_scalar_stmt_in_slp (node)->stmt);
-  else if (stmt_vec_info first_stmt_info
-            = vect_find_last_scalar_stmt_in_slp (node))
-    /* ???  Shifts by scalars hit us here again, we end up vectorizing
-       the shift operand but end up using the scalar operand anyway.
-       This needs to be better reflected in the SLP tree.  For now
-       use the last position if available.  */
-    si = gsi_for_stmt (first_stmt_info->stmt);
   else
     {
       /* Emit other stmts after the children vectorized defs which is