As we now ask vect_supportable_dr_alignment for gathers avoid using
(optimized) re-align instructions for them.
Bootstrap and regtest running on x86_64-unknown-linux-gnu.
PR tree-optimization/122131
* tree-vect-data-refs.cc (vect_supportable_dr_alignment): Do
not use re-align loads for gathers.
* gcc.target/powerpc/altivec-39.c: New testcase.
---
gcc/testsuite/gcc.target/powerpc/altivec-39.c | 17 +++++++++++++++++
gcc/tree-vect-data-refs.cc | 2 +-
2 files changed, 18 insertions(+), 1 deletion(-)
create mode 100644 gcc/testsuite/gcc.target/powerpc/altivec-39.c
diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-39.c
b/gcc/testsuite/gcc.target/powerpc/altivec-39.c
new file mode 100644
index 00000000000..3263eb7bbc6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/altivec-39.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -maltivec" } */
+/* { dg-require-effective-target powerpc_altivec } */
+
+char *sort_filesquote_name_buf_plimit;
+int sort_filesquote_name_buf_width;
+int *__ctype_b_loc() __attribute__((__const__));
+void sort_filesquote_name_buf(char* p)
+{
+ unsigned displayed_width = 0;
+ while (p < sort_filesquote_name_buf_plimit) {
+ if (__ctype_b_loc()[*p])
+ displayed_width++;
+ p++;
+ }
+ sort_filesquote_name_buf_width = displayed_width;
+}
diff --git a/gcc/tree-vect-data-refs.cc b/gcc/tree-vect-data-refs.cc
index a31ff93bbd3..c40a5205911 100644
--- a/gcc/tree-vect-data-refs.cc
+++ b/gcc/tree-vect-data-refs.cc
@@ -6610,7 +6610,7 @@ vect_supportable_dr_alignment (vec_info *vinfo,
dr_vec_info *dr_info,
}
} */
- if (DR_IS_READ (dr))
+ if (DR_IS_READ (dr) && !is_gather_scatter)
{
if (can_implement_p (vec_realign_load_optab, mode)
&& (!targetm.vectorize.builtin_mask_for_load
--
2.51.0