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