Daily bump.
[official-gcc.git] / libgomp / testsuite / libgomp.c / taskgroup-1.c
blob641a3bc0f2ce55f910a4f004db3ef55b6b573d31
1 extern
2 #ifdef __cplusplus
3 "C"
4 #endif
5 void abort (void);
6 int v[16] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
8 int
9 main ()
11 #pragma omp parallel num_threads (4)
12 #pragma omp single
14 int i;
15 #pragma omp taskgroup
17 for (i = 0; i < 16; i += 2)
18 #pragma omp task
20 #pragma omp task
21 v[i]++;
22 #pragma omp task
23 v[i + 1]++;
26 for (i = 0; i < 16; i++)
27 if (v[i] != i + 2)
28 abort ();
29 #pragma omp taskgroup
31 for (i = 0; i < 16; i += 2)
32 #pragma omp task
34 #pragma omp task
35 v[i]++;
36 #pragma omp task
37 v[i + 1]++;
38 #pragma omp taskwait
41 for (i = 0; i < 16; i++)
42 if (v[i] != i + 3)
43 abort ();
44 #pragma omp taskgroup
46 for (i = 0; i < 16; i += 2)
47 #pragma omp task
49 #pragma omp task
50 v[i]++;
51 v[i + 1]++;
53 #pragma omp taskwait
54 for (i = 0; i < 16; i += 2)
55 #pragma omp task
56 v[i + 1]++;
58 for (i = 0; i < 16; i++)
59 if (v[i] != i + 4 + (i & 1))
60 abort ();
61 #pragma omp taskgroup
63 for (i = 0; i < 16; i += 2)
65 #pragma omp taskgroup
67 #pragma omp task
68 v[i]++;
69 #pragma omp task
70 v[i + 1]++;
72 if (v[i] != i + 5 || v[i + 1] != i + 7)
73 abort ();
74 #pragma omp task
75 v[i]++;
78 for (i = 0; i < 16; i++)
79 if (v[i] != i + 6)
80 abort ();
82 return 0;