1 /* { dg-do run { target { { ! x32 } && avx512f_runtime } } } */
2 /* { dg-do compile { target { { ! x32 } && { ! avx512f_runtime } } } } */
3 /* { dg-options "-Ofast -mabi=ms -mavx512f" } */
4 /* { dg-require-effective-target avx512f } */
5 /* { dg-require-effective-target alloca } */
6
7 /* Test with alloca (and DRAP). */
8
9 int a[56];
10 volatile int b = -12345;
11 volatile const int d = 42;
12
13 void foo (int *x, int y, int z)
14 {
15 }
16
17 void (*volatile const foo_noinfo)(int *, int, int) = foo;
18
19 int main (int argc, char *argv[]) {
20 int c;
21 int *e = __builtin_alloca (d);
22 foo_noinfo (e, d, 0);
23 for (; b; b++) {
24 c = b;
25 if (b & 1)
26 c = 2;
27 foo_noinfo (e, d, c);
28 a[-(b % 56)] = c;
29 }
30 return 0;
31 }