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

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Two old latent issues.

diff --git a/gcc/tree-vect-data-refs.cc b/gcc/tree-vect-data-refs.cc
index 202af7a8952..54ad5c8f3dc 100644
--- a/gcc/tree-vect-data-refs.cc
+++ b/gcc/tree-vect-data-refs.cc
@@ -3565,12 +3565,15 @@ vect_analyze_data_ref_accesses (vec_info *vinfo,
          DR_GROUP_NEXT_ELEMENT (lastinfo) = stmtinfo_b;
          lastinfo = stmtinfo_b;

-         STMT_VINFO_SLP_VECT_ONLY (stmtinfo_a)
-           = !can_group_stmts_p (stmtinfo_a, stmtinfo_b, false);
+         if (! STMT_VINFO_SLP_VECT_ONLY (stmtinfo_a))
+           {
+             STMT_VINFO_SLP_VECT_ONLY (stmtinfo_a)
+               = !can_group_stmts_p (stmtinfo_a, stmtinfo_b, false);

-         if (dump_enabled_p () && STMT_VINFO_SLP_VECT_ONLY (stmtinfo_a))
-           dump_printf_loc (MSG_NOTE, vect_location,
-                            "Load suitable for SLP vectorization only.\n");
+             if (dump_enabled_p () && STMT_VINFO_SLP_VECT_ONLY (stmtinfo_a))
+               dump_printf_loc (MSG_NOTE, vect_location,
+                                "Load suitable for SLP vectorization
only.\n");
+           }

          if (init_b == init_prev
              && !to_fixup.add (DR_GROUP_FIRST_ELEMENT (stmtinfo_a))
@@ -3614,7 +3617,11 @@ vect_analyze_data_ref_accesses (vec_info *vinfo,
            {
              DR_GROUP_NEXT_ELEMENT (g) = DR_GROUP_NEXT_ELEMENT (next);
              if (!newgroup)
-               newgroup = next;
+               {
+                 newgroup = next;
+                 STMT_VINFO_SLP_VECT_ONLY (newgroup)
+                   = STMT_VINFO_SLP_VECT_ONLY (grp);
+               }
              else
                DR_GROUP_NEXT_ELEMENT (ng) = next;
              ng = next;

Reply via email to