From: Richard Biener Date: Fri, 25 Aug 2023 07:42:16 +0000 (+0200) Subject: tree-optimization/111136 - STMT_VINFO_SLP_VECT_ONLY and stores X-Git-Tag: basepoints/gcc-15~6662 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a739bac402ea5a583e43dbd01c14ebaff317c885;p=thirdparty%2Fgcc.git tree-optimization/111136 - STMT_VINFO_SLP_VECT_ONLY and stores 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. --- diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index ebee8037e027..23c6e8259e7b 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -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