c++: prvalue of array type [PR111286]
[official-gcc.git] / gcc / testsuite / c-c++-common / gomp / pr63326.c
blob48ab4f64a41c6f2e1e1f9a35a1ff32e9284d79c5
1 /* PR c/63326 */
2 /* { dg-do compile } */
3 /* { dg-options "-fopenmp" } */
5 void
6 f1 (int x)
8 int i;
9 if (x)
10 #pragma omp barrier /* { dg-error "may only be used in compound statements" } */
12 if (x)
13 #pragma omp flush /* { dg-error "may only be used in compound statements" } */
15 if (x)
16 #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */
18 if (x)
19 #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */
21 #pragma omp parallel
23 if (x)
24 #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */
27 #pragma omp parallel
29 if (x)
30 #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */
33 #pragma omp for ordered(1)
34 for (i = 0; i < 16; i++)
36 if (x)
37 #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */
39 if (x)
40 #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */
43 if (x)
44 #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */
46 if (x)
47 #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */
49 if (x)
50 #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */
54 void
55 f2 (int x)
57 int i;
58 while (x)
59 #pragma omp barrier /* { dg-error "may only be used in compound statements" } */
61 while (x)
62 #pragma omp flush /* { dg-error "may only be used in compound statements" } */
64 while (x)
65 #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */
67 while (x)
68 #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */
70 #pragma omp parallel
72 while (x)
73 #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */
76 #pragma omp parallel
78 while (x)
79 #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */
82 #pragma omp for ordered(1)
83 for (i = 0; i < 16; i++)
85 while (x)
86 #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */
88 while (x)
89 #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */
92 while (x)
93 #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */
95 while (x)
96 #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */
98 while (x)
99 #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */
103 void
104 f3 (int x)
106 int i;
107 for (x = 0; x < 10; x++)
108 #pragma omp barrier /* { dg-error "may only be used in compound statements" } */
110 for (x = 0; x < 10; x++)
111 #pragma omp flush /* { dg-error "may only be used in compound statements" } */
113 for (x = 0; x < 10; x++)
114 #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */
116 for (x = 0; x < 10; x++)
117 #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */
119 #pragma omp parallel
121 for (x = 0; x < 10; x++)
122 #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */
125 #pragma omp parallel
127 for (x = 0; x < 10; x++)
128 #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */
131 #pragma omp for ordered(1)
132 for (i = 0; i < 16; i++)
134 for (x = 0; x < 10; x++)
135 #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */
137 for (x = 0; x < 10; x++)
138 #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */
141 for (x = 0; x < 10; x++)
142 #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */
144 for (x = 0; x < 10; x++)
145 #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */
147 for (x = 0; x < 10; x++)
148 #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */
152 void
153 f4 (int x)
155 int i;
158 #pragma omp barrier /* { dg-error "may only be used in compound statements" } */
159 while (0);
163 #pragma omp flush /* { dg-error "may only be used in compound statements" } */
164 while (0);
168 #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */
169 while (0);
173 #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */
174 while (0);
176 #pragma omp parallel
179 #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */
180 while (0);
182 #pragma omp parallel
185 #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */
186 while (0);
188 #pragma omp for ordered(1)
189 for (i = 0; i < 16; i++)
193 #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */
194 while (0);
198 #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */
199 while (0);
204 #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */
205 while (0);
209 #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */
210 while (0);
214 #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */
215 while (0);
219 void
220 f5 (int x)
222 int i;
223 switch (x)
224 #pragma omp barrier /* { dg-error "may only be used in compound statements" } */
226 switch (x)
227 #pragma omp flush /* { dg-error "may only be used in compound statements" } */
229 switch (x)
230 #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */
232 switch (x)
233 #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */
235 #pragma omp parallel
237 switch (x)
238 #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */
241 #pragma omp parallel
243 switch (x)
244 #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */
247 #pragma omp for ordered(1)
248 for (i = 0; i < 16; i++)
250 switch (x)
251 #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */
253 switch (x)
254 #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */
257 switch (x)
258 #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */
260 switch (x)
261 #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */
263 switch (x)
264 #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */
268 void
269 f6 (int x)
271 int i;
272 switch (x)
274 case 1:
275 #pragma omp barrier /* { dg-error "may only be used in compound statements" } */
278 switch (x)
280 case 1:
281 #pragma omp flush /* { dg-error "may only be used in compound statements" } */
284 switch (x)
286 case 1:
287 #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */
290 switch (x)
292 case 1:
293 #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */
296 #pragma omp parallel
298 switch (x)
300 case 1:
301 #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */
305 #pragma omp parallel
307 switch (x)
309 case 1:
310 #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */
314 #pragma omp for ordered(1)
315 for (i = 0; i < 16; i++)
317 switch (x)
319 case 1:
320 #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */
323 switch (x)
325 case 1:
326 #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */
330 switch (x)
332 case 1:
333 #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */
336 switch (x)
338 case 1:
339 #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */
342 switch (x)
344 case 1:
345 #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */
350 void
351 f7 (int x)
353 int i;
354 switch (x)
356 default:
357 #pragma omp barrier /* { dg-error "may only be used in compound statements" } */
360 switch (x)
362 default:
363 #pragma omp flush /* { dg-error "may only be used in compound statements" } */
366 switch (x)
368 default:
369 #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */
372 switch (x)
374 default:
375 #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */
378 #pragma omp parallel
380 switch (x)
382 default:
383 #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */
387 #pragma omp parallel
389 switch (x)
391 default:
392 #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */
396 #pragma omp for ordered(1)
397 for (i = 0; i < 16; i++)
399 switch (x)
401 default:
402 #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */
405 switch (x)
407 default:
408 #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */
412 switch (x)
414 default:
415 #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */
418 switch (x)
420 default:
421 #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */
424 switch (x)
426 default:
427 #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */
432 void
433 f8 (int x)
435 int i;
436 lab1:
437 #pragma omp barrier /* { dg-error "may only be used in compound statements" } */
439 lab2:
440 #pragma omp flush /* { dg-error "may only be used in compound statements" } */
442 lab3:
443 #pragma omp taskwait /* { dg-error "may only be used in compound statements" } */
445 lab4:
446 #pragma omp taskyield /* { dg-error "may only be used in compound statements" } */
448 #pragma omp parallel
450 lab5:
451 #pragma omp cancel parallel /* { dg-error "may only be used in compound statements" } */
454 #pragma omp parallel
456 lab6:
457 #pragma omp cancellation point parallel /* { dg-error "may only be used in compound statements" } */
460 #pragma omp for ordered(1)
461 for (i = 0; i < 16; i++)
463 lab7:
464 #pragma omp ordered depend(source) /* { dg-error "may only be used in compound statements" } */
466 lab8:
467 #pragma omp ordered depend(sink: i-1) /* { dg-error "may only be used in compound statements" } */
470 lab9:
471 #pragma omp target enter data map(to:i) /* { dg-error "may only be used in compound statements" } */
473 lab10:
474 #pragma omp target update to(i) /* { dg-error "may only be used in compound statements" } */
476 lab11:
477 #pragma omp target exit data map(from:i) /* { dg-error "may only be used in compound statements" } */