From 72df175c93d81d4eea67d889d76fda7381fb6743 Mon Sep 17 00:00:00 2001
From: Richard Biener <rguenther@suse.de>
Date: Wed, 13 Nov 2024 15:05:00 +0100
Subject: [PATCH] tree-optimization/117554 - correct single-element
 interleaving check

In addition to a single DR we also require a single lane, not a splat.

	PR tree-optimization/117554
	* tree-vect-stmts.cc (get_group_load_store_type): We can
	use gather/scatter only for a single-lane single element group
	access.
---
 gcc/tree-vect-stmts.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index 2b3dd52a607d..3147ff247a54 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -2277,6 +2277,7 @@ get_group_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info,
   if ((*memory_access_type == VMAT_ELEMENTWISE
        || *memory_access_type == VMAT_STRIDED_SLP)
       && single_element_p
+      && (!slp_node || SLP_TREE_LANES (slp_node) == 1)
       && loop_vinfo
       && vect_use_strided_gather_scatters_p (stmt_info, loop_vinfo,
 					     masked_p, gs_info))
-- 
GitLab