poly_int: ipa_parm_adjustment
[official-gcc.git] / libgomp / testsuite / libgomp.c++ / simd14.C
blobdc18cb619acc978ee7e244fa7be0f71374e120d8
1 // { dg-do run }
2 // { dg-options "-O2" }
3 // { dg-additional-options "-msse2" { target sse2_runtime } }
4 // { dg-additional-options "-mavx" { target avx_runtime } }
6 int a[1024];
7 short b[2048];
9 static inline void
10 bar (int &x, unsigned long long &y, short *&z)
12   a[x] = x + y + *z;
13   x++;
14   y += 17;
15   z += 2;
18 __attribute__((noinline, noclone)) int
19 foo (unsigned long long &s, short *&t)
21   int i, j = 0;
22   int &r = j;
23 #pragma omp parallel for simd linear(r) linear(s:17ULL) linear(t:2)
24   for (i = 0; i < 1024; i++)
25     bar (r, s, t);
26   return j;
29 int
30 main ()
32   int i;
33   for (i = 0; i < 2048; i++)
34     b[i] = 3 * i;
35   unsigned long long s = 12;
36   short *t = b;
37   int j = foo (s, t);
38   for (i = 0; i < 1024; i++)
39     if (a[i] != 12 + 24 * i)
40       __builtin_abort ();
41   if (j != 1024 || s != 12 + 1024 * 17ULL || t != &b[2048])
42     __builtin_abort ();