aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-07-02 09:33:29 +0200
committerRichard Biener <rguenth@gcc.gnu.org>2024-07-02 15:35:50 +0200
commit9bd51351c175d345b8a9b3c19ba49ba358940272 (patch)
tree62611d42f8cef04966dd44950ac87f6d3b5c1996 /gcc
parent4996c5ff650cf1703f0def8665839383e427aba2 (diff)
downloadgcc-9bd51351c175d345b8a9b3c19ba49ba358940272.zip
gcc-9bd51351c175d345b8a9b3c19ba49ba358940272.tar.gz
gcc-9bd51351c175d345b8a9b3c19ba49ba358940272.tar.bz2
tree-optimization/115741 - ICE with VMAT_CONTIGUOUS_REVERSE and gap
When we determine overrun we have to consider VMAT_CONTIGUOUS_REVERSE the same as VMAT_CONTIGUOUS. PR tree-optimization/115741 * tree-vect-stmts.cc (get_group_load_store_type): Also handle VMAT_CONTIGUOUS_REVERSE when determining overrun.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-vect-stmts.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index aab3aa5..20b8451 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -2099,7 +2099,8 @@ get_group_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info,
If there is a combination of the access not covering the full
vector and a gap recorded then we may need to peel twice. */
if (loop_vinfo
- && *memory_access_type == VMAT_CONTIGUOUS
+ && (*memory_access_type == VMAT_CONTIGUOUS
+ || *memory_access_type == VMAT_CONTIGUOUS_REVERSE)
&& SLP_TREE_LOAD_PERMUTATION (slp_node).exists ()
&& !multiple_p (group_size * LOOP_VINFO_VECT_FACTOR (loop_vinfo),
nunits))