https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111156

--- Comment #17 from Richard Biener <rguenth at gcc dot gnu.org> ---
I think the following fixes it, can you verify the runtime (IL looks sane, but
it uses masked scatter stores).

diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index 9e26b09504d..5a5865c42fc 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -2551,7 +2551,8 @@ vect_dissolve_slp_only_groups (loop_vec_info loop_vinfo)
   FOR_EACH_VEC_ELT (datarefs, i, dr)
     {
       gcc_assert (DR_REF (dr));
-      stmt_vec_info stmt_info = loop_vinfo->lookup_stmt (DR_STMT (dr));
+      stmt_vec_info stmt_info
+       = vect_stmt_to_vectorize (loop_vinfo->lookup_stmt (DR_STMT (dr)));

       /* Check if the load is a part of an interleaving chain.  */
       if (STMT_VINFO_GROUPED_ACCESS (stmt_info))

Reply via email to