Daily bump.
[official-gcc.git] / libgomp / testsuite / libgomp.c / pr79940.c
blob6f6646537c60b61bb89003f6e637a7613ef926d6
1 /* PR c/79940 */
3 int
4 main ()
6 int i, j, l, m;
7 int a[10000], b[10000], c[10000];
8 for (i = 0; i < 10000; i++)
10 a[i] = i;
11 b[i] = i & 31;
13 #pragma omp parallel shared(a, b, c)
14 #pragma omp single
15 #pragma omp taskloop shared(a, b, c)
16 for (i = 0; i < 10000; i++)
17 c[i] = a[i] + b[i];
18 #pragma omp parallel
19 #pragma omp single
21 #pragma omp taskloop shared(a, b, c) lastprivate (i)
22 for (i = 0; i < 10000; i++)
23 c[i] += a[i] + b[i];
24 l = i;
26 #pragma omp parallel
27 #pragma omp single
28 #pragma omp taskloop shared(a, b, c) collapse(2)
29 for (i = 0; i < 100; i++)
30 for (j = 0; j < 100; j++)
31 c[i * 100 + j] += a[i * 100 + j] + b[i * 100 + j];
32 #pragma omp parallel
33 #pragma omp single
35 #pragma omp taskloop shared(a, b, c) lastprivate (i, j)
36 for (i = 0; i < 100; i++)
37 for (j = 0; j < 100; j++)
38 c[i * 100 + j] += a[i * 100 + j] + b[i * 100 + j];
39 m = i * 100 + j;
41 for (i = 0; i < 10000; i++)
42 if (a[i] != i || b[i] != (i & 31) || c[i] != 4 * i + 4 * (i & 31))
43 __builtin_abort ();
44 if (l != 10000 || m != 10100)
45 __builtin_abort ();
46 return 0;