]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-optimization/111136 - STMT_VINFO_SLP_VECT_ONLY and stores
authorRichard Biener <rguenther@suse.de>
Fri, 25 Aug 2023 07:42:16 +0000 (09:42 +0200)
committerRichard Biener <rguenther@suse.de>
Fri, 25 Aug 2023 08:17:53 +0000 (10:17 +0200)
vect_dissolve_slp_only_groups currently only expects loads, for stores
we have to make sure to mark the dissolved "groups" strided.

PR tree-optimization/111136
* tree-vect-loop.cc (vect_dissolve_slp_only_groups): For
stores force STMT_VINFO_STRIDED_P and also duplicate that
to all elements.

gcc/tree-vect-loop.cc

index ebee8037e02787ded8bbb75b6e7006cb7698a5c7..23c6e8259e7b133cd7acc6bcf0bad26423e9993a 100644 (file)
@@ -2453,8 +2453,13 @@ vect_dissolve_slp_only_groups (loop_vec_info loop_vinfo)
                  DR_GROUP_FIRST_ELEMENT (vinfo) = vinfo;
                  DR_GROUP_NEXT_ELEMENT (vinfo) = NULL;
                  DR_GROUP_SIZE (vinfo) = 1;
-                 if (STMT_VINFO_STRIDED_P (first_element))
-                   DR_GROUP_GAP (vinfo) = 0;
+                 if (STMT_VINFO_STRIDED_P (first_element)
+                     /* We cannot handle stores with gaps.  */
+                     || DR_IS_WRITE (dr_info->dr))
+                   {
+                     STMT_VINFO_STRIDED_P (vinfo) = true;
+                     DR_GROUP_GAP (vinfo) = 0;
+                   }
                  else
                    DR_GROUP_GAP (vinfo) = group_size - 1;
                  /* Duplicate and adjust alignment info, it needs to