Skip various cmp-mem-const tests on lp64 hppa*-*-*
[official-gcc.git] / libgomp / testsuite / libgomp.c-c++-common / depobj-1.c
bloba07a0c889c113a74ebc2c58243ac46b89cbd03ec
1 #include <stdlib.h>
2 #include <omp.h>
4 void
5 dep (void)
7 int x = 1;
8 omp_depend_t d1, d2;
9 #pragma omp depobj (d1) depend(in: x)
10 #pragma omp depobj (d2) depend(in: x)
11 #pragma omp depobj (d2) update(out)
12 #pragma omp parallel
13 #pragma omp single
15 #pragma omp task shared (x) depend(depobj: d2)
16 x = 2;
17 #pragma omp task shared (x) depend(depobj: d1)
18 if (x != 2)
19 abort ();
21 #pragma omp depobj (d2) destroy
22 #pragma omp depobj (d1) destroy
25 void
26 dep2 (void)
28 #pragma omp parallel
29 #pragma omp single
31 int x = 1;
32 omp_depend_t d1, d2;
33 #pragma omp depobj (d1) depend(out: x)
34 #pragma omp depobj (*&d2) depend (in:x)
35 #pragma omp depobj(d2)update(in)
36 #pragma omp task shared (x) depend(depobj:d1)
37 x = 2;
38 #pragma omp task shared (x) depend(depobj : d2)
39 if (x != 2)
40 abort ();
41 #pragma omp taskwait
42 #pragma omp depobj(d1)destroy
43 #pragma omp depobj((&d2)[0]) destroy
47 void
48 dep3 (void)
50 omp_depend_t d[2];
51 #pragma omp parallel
53 int x = 1;
54 #pragma omp single
56 #pragma omp depobj(d[0]) depend(out:x)
57 #pragma omp depobj(d[1]) depend(in: x)
58 #pragma omp task shared (x) depend(depobj: *d)
59 x = 2;
60 #pragma omp task shared (x) depend(depobj: *(d + 1))
61 if (x != 2)
62 abort ();
65 #pragma omp depobj(d[0]) destroy
66 #pragma omp depobj(d[1]) destroy
69 int xx;
70 omp_depend_t dd1, dd2;
72 void
73 antidep (void)
75 xx = 1;
76 #pragma omp parallel
77 #pragma omp single
79 #pragma omp task shared(xx) depend(depobj:dd2)
80 if (xx != 1)
81 abort ();
82 #pragma omp task shared(xx) depend(depobj:dd1)
83 xx = 2;
87 int
88 main ()
90 dep ();
91 dep2 ();
92 dep3 ();
93 #pragma omp depobj (dd1) depend (inout: xx)
94 #pragma omp depobj (dd2) depend (in : xx)
95 antidep ();
96 #pragma omp depobj (dd2) destroy
97 #pragma omp depobj (dd1) destroy
98 return 0;