Daily bump.
[official-gcc.git] / libgomp / testsuite / libgomp.c / depend-1.c
blob2db1205c12a083465a09666ce04679784fd689cb
1 #include <stdlib.h>
3 void
4 dep (void)
6 int x = 1;
7 #pragma omp parallel
8 #pragma omp single
10 #pragma omp task shared (x) depend(out: x)
11 x = 2;
12 #pragma omp task shared (x) depend(in: x)
13 if (x != 2)
14 abort ();
18 void
19 dep2 (void)
21 #pragma omp parallel
22 #pragma omp single
24 int x = 1;
25 #pragma omp task shared (x) depend(out: x)
26 x = 2;
27 #pragma omp task shared (x) depend(in: x)
28 if (x != 2)
29 abort ();
30 #pragma omp taskwait
34 void
35 dep3 (void)
37 #pragma omp parallel
39 int x = 1;
40 #pragma omp single
42 #pragma omp task shared (x) depend(out: x)
43 x = 2;
44 #pragma omp task shared (x) depend(in: x)
45 if (x != 2)
46 abort ();
51 void
52 firstpriv (void)
54 #pragma omp parallel
55 #pragma omp single
57 int x = 1;
58 #pragma omp task depend(out: x)
59 x = 2;
60 #pragma omp task depend(in: x)
61 if (x != 1)
62 abort ();
66 void
67 antidep (void)
69 int x = 1;
70 #pragma omp parallel
71 #pragma omp single
73 #pragma omp task shared(x) depend(in: x)
74 if (x != 1)
75 abort ();
76 #pragma omp task shared(x) depend(out: x)
77 x = 2;
81 void
82 antidep2 (void)
84 #pragma omp parallel
85 #pragma omp single
87 int x = 1;
88 #pragma omp taskgroup
90 #pragma omp task shared(x) depend(in: x)
91 if (x != 1)
92 abort ();
93 #pragma omp task shared(x) depend(out: x)
94 x = 2;
99 void
100 antidep3 (void)
102 #pragma omp parallel
104 int x = 1;
105 #pragma omp single
107 #pragma omp task shared(x) depend(in: x)
108 if (x != 1)
109 abort ();
110 #pragma omp task shared(x) depend(out: x)
111 x = 2;
117 void
118 outdep (void)
120 #pragma omp parallel
121 #pragma omp single
123 int x = 0;
124 #pragma omp task shared(x) depend(out: x)
125 x = 1;
126 #pragma omp task shared(x) depend(out: x)
127 x = 2;
128 #pragma omp taskwait
129 if (x != 2)
130 abort ();
134 void
135 concurrent (void)
137 int x = 1;
138 #pragma omp parallel
139 #pragma omp single
141 #pragma omp task shared (x) depend(out: x)
142 x = 2;
143 #pragma omp task shared (x) depend(in: x)
144 if (x != 2)
145 abort ();
146 #pragma omp task shared (x) depend(in: x)
147 if (x != 2)
148 abort ();
149 #pragma omp task shared (x) depend(in: x)
150 if (x != 2)
151 abort ();
155 void
156 concurrent2 (void)
158 #pragma omp parallel
159 #pragma omp single
161 int x = 1;
162 #pragma omp task shared (x) depend(out: x)
163 x = 2;
164 #pragma omp task shared (x) depend(in: x)
165 if (x != 2)
166 abort ();
167 #pragma omp task shared (x) depend(in: x)
168 if (x != 2)
169 abort ();
170 #pragma omp task shared (x) depend(in: x)
171 if (x != 2)
172 abort ();
173 #pragma omp taskwait
177 void
178 concurrent3 (void)
180 #pragma omp parallel
182 int x = 1;
183 #pragma omp single
185 #pragma omp task shared (x) depend(out: x)
186 x = 2;
187 #pragma omp task shared (x) depend(in: x)
188 if (x != 2)
189 abort ();
190 #pragma omp task shared (x) depend(in: x)
191 if (x != 2)
192 abort ();
193 #pragma omp task shared (x) depend(in: x)
194 if (x != 2)
195 abort ();
201 main ()
203 dep ();
204 dep2 ();
205 dep3 ();
206 firstpriv ();
207 antidep ();
208 antidep2 ();
209 antidep3 ();
210 outdep ();
211 concurrent ();
212 concurrent2 ();
213 concurrent3 ();
214 return 0;