1subroutine f1
2  integer i, j
3  !$omp do
4  do i = 0, 2
5      !$omp do		! { dg-error "may not be closely nested" }
6      do j = 0, 2
7        block; end block
8      end do
9      !$omp sections	! { dg-error "may not be closely nested" }
10        call do_work
11        !$omp section
12        block; end block
13      !$omp end sections
14      !$omp single	! { dg-error "may not be closely nested" }
15        block; end block
16      !$omp end single
17      !$omp master	! { dg-error "may not be closely nested" }
18        block; end block
19      !$omp end master
20      !$omp masked	! { dg-error "may not be closely nested" }
21        block; end block
22      !$omp end masked
23      !$omp barrier	! { dg-error "may not be closely nested" }
24      !$omp scope		! { dg-error "may not be closely nested" }
25        block; end block
26      !$omp end scope
27  end do
28  !$omp sections
29    !$omp do		! { dg-error "may not be closely nested" }
30    do j = 0, 2
31      block; end block
32    end do
33  !$omp end sections
34  !$omp sections
35    !$omp sections	! { dg-error "may not be closely nested" }
36      call do_work
37    !$omp section
38      block; end block
39    !$omp end sections
40  !$omp end sections
41  !$omp sections
42    !$omp single		! { dg-error "may not be closely nested" }
43      block; end block
44    !$omp end single
45  !$omp end sections
46  !$omp sections
47    !$omp master		! { dg-error "may not be closely nested" }
48      block; end block
49    !$omp end master
50  !$omp end sections
51  !$omp sections
52    !$omp masked		! { dg-error "may not be closely nested" }
53      block; end block
54    !$omp end masked
55  !$omp end sections
56  !$omp sections
57    !$omp scope		! { dg-error "may not be closely nested" }
58      block; end block
59    !$omp end scope
60  !$omp end sections
61  !$omp sections
62    !$omp section
63      block; end block
64  !$omp end sections
65  !$omp sections
66    !$omp section
67    !$omp do		! { dg-error "may not be closely nested" }
68    do j = 0, 2
69      block; end block
70    end do
71  !$omp end sections
72  !$omp sections
73    !$omp section
74    !$omp sections	! { dg-error "may not be closely nested" }
75      call do_work
76    !$omp section
77      block; end block
78    !$omp end sections
79  !$omp end sections
80  !$omp sections
81    !$omp section
82    !$omp single		! { dg-error "may not be closely nested" }
83      block; end block
84    !$omp end single
85  !$omp end sections
86  !$omp sections
87    !$omp section
88    !$omp master		! { dg-error "may not be closely nested" }
89      block; end block
90    !$omp end master
91    !$omp section
92    !$omp masked		! { dg-error "may not be closely nested" }
93      block; end block
94    !$omp end masked
95  !$omp end sections
96  !$omp sections
97    !$omp section
98    !$omp scope		! { dg-error "may not be closely nested" }
99      block; end block
100    !$omp end scope
101  !$omp end sections
102  !$omp single
103    !$omp do		! { dg-error "may not be closely nested" }
104    do j = 0, 2
105      block; end block
106    end do
107    !$omp sections	! { dg-error "may not be closely nested" }
108      call do_work
109    !$omp section
110      block; end block
111    !$omp end sections
112    !$omp single		! { dg-error "may not be closely nested" }
113      block; end block
114    !$omp end single
115    !$omp master		! { dg-error "may not be closely nested" }
116      block; end block
117    !$omp end master
118    !$omp masked		! { dg-error "may not be closely nested" }
119      block; end block
120    !$omp end masked
121    !$omp barrier		! { dg-error "may not be closely nested" }
122    !$omp scope		! { dg-error "may not be closely nested" }
123      block; end block
124    !$omp end scope
125  !$omp end single
126  !$omp master
127    !$omp do		! { dg-error "may not be closely nested" }
128    do j = 0, 2
129      block; end block
130    end do
131    !$omp sections	! { dg-error "may not be closely nested" }
132      call do_work
133    !$omp section
134      block; end block
135    !$omp end sections
136    !$omp single		! { dg-error "may not be closely nested" }
137      block; end block
138    !$omp end single
139    !$omp master
140      block; end block
141    !$omp end master
142    !$omp barrier		! { dg-error "may not be closely nested" }
143    !$omp scope		! { dg-error "may not be closely nested" }
144      block; end block
145    !$omp end scope
146  !$omp end master
147  !$omp masked filter (1)
148    !$omp do		! { dg-error "may not be closely nested" }
149    do j = 0, 2
150      block; end block
151    end do
152    !$omp sections	! { dg-error "may not be closely nested" }
153      call do_work
154    !$omp section
155      block; end block
156    !$omp end sections
157    !$omp single		! { dg-error "may not be closely nested" }
158      block; end block
159    !$omp end single
160    !$omp master
161      block; end block
162    !$omp end master
163    !$omp barrier		! { dg-error "may not be closely nested" }
164    !$omp scope		! { dg-error "may not be closely nested" }
165      block; end block
166    !$omp end scope
167  !$omp end masked
168  !$omp task
169    !$omp do		! { dg-error "may not be closely nested" }
170    do j = 0, 2
171      block; end block
172    end do
173    !$omp sections	! { dg-error "may not be closely nested" }
174      call do_work
175    !$omp section
176      block; end block
177    !$omp end sections
178    !$omp single		! { dg-error "may not be closely nested" }
179      block; end block
180    !$omp end single
181    !$omp master		! { dg-error "may not be closely nested" }
182      block; end block
183    !$omp end master
184    !$omp masked		! { dg-error "may not be closely nested" }
185      block; end block
186    !$omp end masked
187    !$omp barrier		! { dg-error "may not be closely nested" }
188    !$omp scope		! { dg-error "may not be closely nested" }
189      block; end block
190    !$omp end scope
191  !$omp end task
192  !$omp parallel
193    !$omp do
194    do j = 0, 2
195      block; end block
196    end do
197    !$omp sections
198      call do_work
199    !$omp section
200      block; end block
201    !$omp end sections
202    !$omp single
203      block; end block
204    !$omp end single
205    !$omp master
206      block; end block
207    !$omp end master
208    !$omp masked
209      block; end block
210    !$omp end masked
211    !$omp barrier
212    !$omp scope
213      block; end block
214    !$omp end scope
215    !$omp scope
216      !$omp scope
217        block; end block
218      !$omp end scope
219    !$omp end scope
220  !$omp end parallel
221  !$omp scope
222    !$omp do
223    do j = 0, 2
224      block; end block
225    end do
226    !$omp sections
227      call do_work
228    !$omp section
229      block; end block
230    !$omp end sections
231    !$omp single
232      block; end block
233    !$omp end single
234    !$omp master
235      block; end block
236    !$omp end master
237    !$omp masked
238      block; end block
239    !$omp end masked
240    !$omp barrier
241    !$omp scope
242      block; end block
243    !$omp end scope
244    !$omp scope
245      !$omp scope
246        block; end block
247      !$omp end scope
248    !$omp end scope
249  !$omp end scope
250end
251
252subroutine f2
253  integer i, j
254  !$omp ordered
255    !$omp do		! { dg-error "may not be closely nested" }
256    do j = 0, 2
257      block; end block
258    end do
259    !$omp sections	! { dg-error "may not be closely nested" }
260      call do_work
261      !$omp section
262      block; end block
263    !$omp end sections
264    !$omp single		! { dg-error "may not be closely nested" }
265      block; end block
266    !$omp end single
267    !$omp master
268      block; end block
269    !$omp end master
270    !$omp masked
271      block; end block
272    !$omp end masked
273    !$omp barrier		! { dg-error "may not be closely nested" }
274    !$omp scope		! { dg-error "may not be closely nested" }
275      block; end block
276    !$omp end scope
277  !$omp end ordered
278end
279
280subroutine f3 (void)
281  !$omp critical
282    !$omp ordered		! { dg-error "may not be closely nested" }
283      block; end block
284    !$omp end ordered
285    !$omp scope		! { dg-error "may not be closely nested" }
286      block; end block
287    !$omp end scope
288  !$omp end critical
289end
290
291subroutine f4 (void)
292  !$omp task
293    !$omp ordered		! { dg-error "may not be closely nested" }
294      block; end block
295    !$omp end ordered
296    !$omp scope		! { dg-error "may not be closely nested" }
297      block; end block
298    !$omp end scope
299  !$omp end task
300end
301
302subroutine f5 (void)
303  integer i
304  !$omp do
305  do i = 0, 9
306     !$omp ordered		! { dg-error "must be closely nested" }
307       block; end block
308     !$omp end ordered
309  end do
310  !$omp do ordered
311  do i = 0, 9
312     !$omp ordered
313       block; end block
314     !$omp end ordered
315  end do
316end
317
318subroutine f6 (void)
319  !$omp critical (foo)
320    !$omp critical (bar)
321      block; end block
322    !$omp end critical (bar)
323  !$omp end critical (foo)
324  !$omp critical
325    !$omp critical (baz)
326      block; end block
327    !$omp end critical (baz)
328  !$omp end critical
329end
330
331subroutine f7 (void)
332  !$omp critical (foo2)
333    !$omp critical
334      block; end block
335    !$omp end critical
336  !$omp end critical (foo2)
337  !$omp critical (bar)
338    !$omp critical (bar)		! { dg-error "may not be nested" }
339      block; end block
340    !$omp end critical (bar)
341  !$omp end critical (bar)
342  !$omp critical
343    !$omp critical		! { dg-error "may not be nested" }
344      block; end block
345    !$omp end critical
346  !$omp end critical
347end
348