The PR112736 testcase fails on RISC-V because the aligned exception
uses the wrong check.  The alignment support scheme can be
dr_aligned even when the access isn't aligned to the vector size
but some targets are happy with element alignment.  The following
fixes that.

Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.

        PR tree-optimization/113073
        * tree-vect-stmts.cc (vectorizable_load): Properly ensure
        to exempt only vector-size aligned overreads.
---
 gcc/tree-vect-stmts.cc | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index fc6923cf68a..e9ff728dfd4 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -11476,7 +11476,9 @@ vectorizable_load (vec_info *vinfo,
                                      - (group_size * vf - gap), nunits))
                          /* DR will be unused.  */
                          ltype = NULL_TREE;
-                       else if (alignment_support_scheme == dr_aligned)
+                       else if (known_ge (vect_align,
+                                          tree_to_poly_uint64
+                                            (TYPE_SIZE_UNIT (vectype))))
                          /* Aligned access to excess elements is OK if
                             at least one element is accessed in the
                             scalar loop.  */
-- 
2.35.3

Reply via email to