/* PR target/64252 */ /* Test correctness of size 3 store groups permutation. */ /* { dg-additional-options "-O3" } */ /* { dg-additional-options "-mavx" { target avx_runtime } } */ #include "tree-vect.h" #define N 50 enum num3 { a, b, c }; struct flags { enum num3 f; unsigned int c; unsigned int p; }; struct flagsN { struct flags a[N]; }; void bar (int n, struct flagsN *ff) { struct flagsN *fc; for (fc = ff + 1; fc < (ff + n); fc++) { int i; for (i = 0; i < N; ++i) { ff->a[i].f = 0; ff->a[i].c = i; ff->a[i].p = -1; } for (i = 0; i < n; i++) { int j; for (j = 0; j < N - n; ++j) { fc->a[i + j].f = 0; fc->a[i + j].c = j + i; fc->a[i + j].p = -1; } } } } struct flagsN q[2]; int main() { int i; check_vect (); bar(2, q); #pragma GCC novector for (i = 0; i < N; i++) if (q[0].a[i].f != 0 || q[0].a[i].c != i || q[0].a[i].p != -1) abort (); return 0; }