[Bug tree-optimization/88903] [7/8/9 Regression] wrong-code with SLP vectorized shift
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88903 --- Comment #5 from Richard Biener --- In the end a mistake of the PR48616 fix (r172638).
[Bug tree-optimization/88903] [7/8/9 Regression] wrong-code with SLP vectorized shift
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88903 --- Comment #4 from Martin Liška --- Started with: SVN revision: r224221 Author: rguenth 2015-06-08 Richard Biener * tree-vect-stmts.c (vectorizable_load): Compute the pointer adjustment for gaps at the end of a SLP load group properly. * tree-vect-slp.c (vect_supported_load_permutation_p): Allow all permutations we can generate. (vect_transform_slp_perm_load): Use the correct group-size. * gcc.dg/vect/slp-perm-10.c: New testcase. * gcc.dg/vect/slp-23.c: Adjust. * gcc.dg/torture/pr53366-2.c: Also verify cross-iteration vector pointer update.
[Bug tree-optimization/88903] [7/8/9 Regression] wrong-code with SLP vectorized shift
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88903 Richard Biener changed: What|Removed |Added Keywords||wrong-code Target Milestone|8.3 |7.5 Summary|[8/9 Regression] wrong-code |[7/8/9 Regression] |with SLP vectorized shift |wrong-code with SLP ||vectorized shift --- Comment #3 from Richard Biener --- Variant that also fails with GCC 7 (no SLP induction support): int x[1024]; int y[1024]; int z[1024]; void __attribute__((noinline)) foo() { for (int i = 0; i < 512; ++i) { x[2*i] = x[2*i] << y[2*i]; x[2*i+1] = x[2*i+1] << y[2*i]; z[2*i] = y[2*i]; z[2*i+1] = y[2*i+1]; } } int main() { for (int i = 0; i < 1024; ++i) x[i] = i, y[i] = i % 8; foo (); for (int i = 0; i < 1024; ++i) if (x[i] != i << ((i & ~1) % 8)) __builtin_abort (); return 0; }