Skip gnat.dg/prot7.adb on hppa.
[official-gcc.git] / libgomp / testsuite / libgomp.c-c++-common / task-reduction-4.c
blobb0e5197623b98fe48c10e88349abb05dacf29cfd
1 extern
2 #ifdef __cplusplus
3 "C"
4 #endif
5 void abort (void);
7 void
8 bar (long long int *p)
10 p[0] *= 2;
11 #pragma omp task in_reduction (*: p[0])
12 p[0] *= 3;
15 void
16 foo (long long int *p, long long int *q)
18 #pragma omp taskgroup task_reduction (*: p[0])
20 #pragma omp task in_reduction (*: p[0])
21 bar (p);
22 #pragma omp task in_reduction (*: p[0])
23 bar (p);
24 bar (p);
25 #pragma omp taskgroup task_reduction (*: q[0])
27 #pragma omp task in_reduction (*: q[0])
28 bar (q);
29 #pragma omp task in_reduction (*: q[0])
30 bar (q);
31 #pragma omp task in_reduction (*: q[0])
32 bar (q);
33 bar (q);
34 #pragma omp task in_reduction (*: p[0])
36 #pragma omp taskgroup task_reduction (*: p[0])
38 #pragma omp task in_reduction (*: p[0])
39 bar (p);
40 p[0] *= 2;
41 #pragma omp task in_reduction (*: p[0])
42 bar (p);
49 int
50 main ()
52 long long int p = 1LL, q = 1LL;
53 foo (&p, &q);
54 if (p != 6LL * 6LL * 6LL * 6LL * 6LL * 2LL || q != 6LL * 6LL * 6LL * 6LL)
55 abort ();
56 p = 1LL;
57 q = 1LL;
58 #pragma omp taskgroup
59 foo (&p, &q);
60 if (p != 6LL * 6LL * 6LL * 6LL * 6LL * 2LL || q != 6LL * 6LL * 6LL * 6LL)
61 abort ();
62 p = 1LL;
63 q = 1LL;
64 #pragma omp parallel
65 #pragma omp single
66 foo (&p, &q);
67 if (p != 6LL * 6LL * 6LL * 6LL * 6LL * 2LL || q != 6LL * 6LL * 6LL * 6LL)
68 abort ();
69 return 0;