tree-optimization/102905 - restore re-align load for alignment peeling

Message ID sq32qos-2rs4-495r-75s6-35875718n2o@fhfr.qr
State Committed
Commit 0b028fb4989c2bdfaf474b4493c5926fb40da3c3
Headers
Series tree-optimization/102905 - restore re-align load for alignment peeling |

Commit Message

Richard Biener Oct. 25, 2021, 10:49 a.m. UTC
  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  <rguenther@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(-)
  

Patch

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,