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