LWG 3035. std::allocator's constructors should be constexpr
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / pr64252.c
blobb82ad017c16fda6e031b503a9b11fe39a3691a6c
1 /* PR target/64252 */
2 /* Test correctness of size 3 store groups permutation. */
3 /* { dg-additional-options "-O3" } */
4 /* { dg-additional-options "-mavx" { target avx_runtime } } */
6 #include "tree-vect.h"
8 #define N 50
10 enum num3
12 a, b, c
15 struct flags
17 enum num3 f;
18 unsigned int c;
19 unsigned int p;
22 struct flagsN
24 struct flags a[N];
27 void
28 bar (int n, struct flagsN *ff)
30 struct flagsN *fc;
31 for (fc = ff + 1; fc < (ff + n); fc++)
33 int i;
34 for (i = 0; i < N; ++i)
36 ff->a[i].f = 0;
37 ff->a[i].c = i;
38 ff->a[i].p = -1;
40 for (i = 0; i < n; i++)
42 int j;
43 for (j = 0; j < N - n; ++j)
45 fc->a[i + j].f = 0;
46 fc->a[i + j].c = j + i;
47 fc->a[i + j].p = -1;
53 struct flagsN q[2];
55 int main()
57 int i;
58 check_vect ();
59 bar(2, q);
60 for (i = 0; i < N; i++)
61 if (q[0].a[i].f != 0 || q[0].a[i].c != i || q[0].a[i].p != -1)
62 abort ();
63 return 0;