This uses the computed alignment scheme in vectorizable_store
much like vectorizable_load does instead of re-querying
it via aligned_access_p.

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

2021-10-18  Richard Biener  <rguent...@suse.de>

        * tree-vect-stmts.c (vectorizable_store): Use the
        computed alignment scheme instead of querying
        aligned_access_p.
---
 gcc/tree-vect-stmts.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 0e5e553ffe8..07123a2970f 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -8213,8 +8213,11 @@ vectorizable_store (vec_info *vinfo,
                vec_oprnd = result_chain[i];
 
              align = known_alignment (DR_TARGET_ALIGNMENT (first_dr_info));
-             if (aligned_access_p (first_dr_info, vectype))
-               misalign = 0;
+             if (alignment_support_scheme == dr_aligned)
+               {
+                 gcc_assert (aligned_access_p (first_dr_info, vectype));
+                 misalign = 0;
+               }
              else if (dr_misalignment (first_dr_info, vectype)
                       == DR_MISALIGNMENT_UNKNOWN)
                {
@@ -8299,8 +8302,8 @@ vectorizable_store (vec_info *vinfo,
                                          dataref_offset
                                          ? dataref_offset
                                          : build_int_cst (ref_type, 0));
-                 if (aligned_access_p (first_dr_info, vectype))
-                   ;
+                 if (alignment_support_scheme == dr_aligned)
+                   gcc_assert (aligned_access_p (first_dr_info, vectype));
                  else
                    TREE_TYPE (data_ref)
                      = build_aligned_type (TREE_TYPE (data_ref),
-- 
2.31.1

Reply via email to