1subroutine foo
2  integer :: i, j
3  !$omp taskloop
4  do i = 0, 63
5      !$omp do			! { dg-error "region may not be closely nested inside of" }
6      do j = 0, 9
7      end do
8      !$omp single		! { dg-error "region may not be closely nested inside of" }
9      !$omp end single
10      !$omp sections		! { dg-error "region may not be closely nested inside of" }
11        !$omp section
12        block
13        end block
14      !$omp end sections
15      !$omp barrier		! { dg-error "region may not be closely nested inside of" }
16      !$omp master		! { dg-error "region may not be closely nested inside of" }  -- ?
17        block; end block ! otherwise not generated
18      !$omp end master
19      !$omp masked		! { dg-error "region may not be closely nested inside of" }  -- ?
20        block; end block ! otherwise not generated
21      !$omp end masked
22      !$omp scope			! { dg-error "region may not be closely nested inside of" }  -- ?
23        block; end block ! otherwise not generated
24      !$omp end scope
25      !$omp ordered		! { dg-error "region may not be closely nested inside of" }
26      !$omp end ordered
27      !$omp ordered threads	! { dg-error "region may not be closely nested inside of" }
28      !$omp end ordered
29      !$omp ordered simd threads	! { dg-error ".ordered. .simd. must be closely nested inside .simd. region" }
30      !$omp end ordered
31      !$omp simd
32      do j = 0, 9
33        !$omp ordered simd
34        !$omp end ordered
35      end do
36      !$omp critical
37        !$omp simd
38        do j = 0, 9
39          !$omp ordered simd
40          !$omp end ordered
41        end do
42      !$omp end critical
43  end do
44  !$omp taskloop
45  do i = 0, 63
46    !$omp parallel
47      !$omp do
48      do j = 0, 9
49      end do
50      !$omp single
51      !$omp end single
52      !$omp sections
53        !$omp section
54        block; end block
55      !$omp end sections
56      !$omp barrier
57      !$omp master
58        block; end block ! otherwise not generated
59      !$omp end master
60      !$omp masked
61        block; end block ! otherwise not generated
62      !$omp end masked
63      !$omp scope
64        block; end block ! otherwise not generated
65      !$omp end scope
66      !$omp ordered		! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
67      !$omp end ordered
68      !$omp ordered threads	! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
69      !$omp end ordered
70      !$omp simd
71      do j = 0, 9
72        !$omp ordered simd
73        !$omp end ordered
74      end do
75      !$omp critical
76        !$omp simd
77        do j = 0, 9
78          !$omp ordered simd
79          !$omp end ordered
80        end do
81      !$omp end critical
82    !$omp end parallel
83  end do
84  !$omp taskloop
85  do i = 0, 63
86    !$omp target
87      !$omp do
88      do j = 0, 9
89      end do
90      !$omp single
91      !$omp end single
92      !$omp sections
93        !$omp section
94        block; end block
95      !$omp end sections
96      !$omp barrier
97      !$omp master
98        block; end block ! otherwise not generated
99      !$omp end master
100      !$omp masked
101        block; end block ! otherwise not generated
102      !$omp end masked
103      !$omp scope
104        block; end block ! otherwise not generated
105      !$omp end scope
106      !$omp ordered		! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
107      !$omp end ordered
108      !$omp ordered threads	! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
109      !$omp end ordered
110      !$omp simd
111      do j = 0, 9
112        !$omp ordered simd
113        !$omp end ordered
114      end do
115      !$omp critical
116        !$omp simd
117        do j = 0, 9
118          !$omp ordered simd
119          !$omp end ordered
120        end do
121      !$omp end critical
122    !$omp end target
123  end do
124  !$omp ordered
125    !$omp ordered			! { dg-error "region may not be closely nested inside of" }
126    !$omp end ordered
127  !$omp end ordered
128  !$omp ordered threads
129    !$omp ordered			! { dg-error "region may not be closely nested inside of" }
130    !$omp end ordered
131  !$omp end ordered
132  !$omp ordered
133    !$omp ordered threads		! { dg-error "region may not be closely nested inside of" }
134    !$omp end ordered
135  !$omp end ordered
136  !$omp ordered threads
137    !$omp ordered threads		! { dg-error "region may not be closely nested inside of" }
138    !$omp end ordered
139  !$omp end ordered
140  !$omp critical
141    !$omp ordered simd		! { dg-error ".ordered. .simd. must be closely nested inside .simd. region" }
142    !$omp end ordered
143  !$omp end critical
144  !$omp do ordered
145  do i = 0, 63
146    !$omp parallel
147      !$omp ordered threads	! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
148      !$omp end ordered
149    !$omp end parallel
150  end do
151  !$omp do ordered
152  do i = 0, 63
153    !$omp parallel
154      !$omp ordered		! { dg-error ".ordered. region must be closely nested inside a loop region with an .ordered. clause" }
155      !$omp end ordered
156    !$omp end parallel
157  end do
158  !$omp do ordered(1)
159  do i = 0, 63
160    !$omp parallel
161      !$omp ordered depend(source)	! { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause with a parameter" }
162      !$omp ordered depend(sink: i - 1)	! { dg-error ".ordered. construct with .depend. clause must be closely nested inside a loop with .ordered. clause with a parameter" }
163    !$omp end parallel
164  end do
165end
166