Previous refactoring made the possibility of considering re-aligned
loads for unlimited cost model alignment peeling difficult so I
ditched that.  Later refactoring made it easily possible again so
the following patch re-instantiates this which should fix the
observed regression on powerpc with altivec.

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

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

        PR tree-optimization/102905
        * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
        Use vect_supportable_dr_alignment again to determine whether
        an access is supported when not aligned.
---
 gcc/tree-vect-data-refs.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 556ae9725f1..cbcd4b80246 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -1994,9 +1994,8 @@ vect_enhance_data_refs_alignment (loop_vec_info 
loop_vinfo)
                 prune all entries from the peeling hashtable which cause
                 DRs to be not supported.  */
              bool supportable_if_not_aligned
-               = targetm.vectorize.support_vector_misalignment
-                   (TYPE_MODE (vectype), TREE_TYPE (DR_REF (dr_info->dr)),
-                    DR_MISALIGNMENT_UNKNOWN, false);
+               = vect_supportable_dr_alignment
+                   (loop_vinfo, dr_info, vectype, DR_MISALIGNMENT_UNKNOWN);
              while (known_le (npeel_tmp, nscalars))
                 {
                   vect_peeling_hash_insert (&peeling_htab, loop_vinfo,
-- 
2.31.1

Reply via email to