2008-07-28 Richard Guenther <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.dg / gomp / nesting-1.c
blob6f27b907e6b0cc2ec4a913e74eb8cfb59511ae90
1 /* { dg-do compile } */
2 /* { dg-options "-fopenmp" } */
4 void
5 f1 (void)
7 int i, j;
8 #pragma omp for
9 for (i = 0; i < 3; i++)
11 #pragma omp for /* { dg-warning "may not be closely nested" } */
12 for (j = 0; j < 3; j++)
14 #pragma omp sections /* { dg-warning "may not be closely nested" } */
17 #pragma omp section
20 #pragma omp single /* { dg-warning "may not be closely nested" } */
22 #pragma omp master /* { dg-warning "may not be closely nested" } */
24 #pragma omp barrier /* { dg-warning "may not be closely nested" } */
26 #pragma omp sections
28 #pragma omp for /* { dg-warning "may not be closely nested" } */
29 for (j = 0; j < 3; j++)
31 #pragma omp sections /* { dg-warning "may not be closely nested" } */
34 #pragma omp section
37 #pragma omp single /* { dg-warning "may not be closely nested" } */
39 #pragma omp master /* { dg-warning "may not be closely nested" } */
41 #pragma omp section
44 #pragma omp single
46 #pragma omp for /* { dg-warning "may not be closely nested" } */
47 for (j = 0; j < 3; j++)
49 #pragma omp sections /* { dg-warning "may not be closely nested" } */
52 #pragma omp section
55 #pragma omp single /* { dg-warning "may not be closely nested" } */
57 #pragma omp master /* { dg-warning "may not be closely nested" } */
59 #pragma omp barrier /* { dg-warning "may not be closely nested" } */
61 #pragma omp master
63 #pragma omp for /* { dg-warning "may not be closely nested" } */
64 for (j = 0; j < 3; j++)
66 #pragma omp sections /* { dg-warning "may not be closely nested" } */
69 #pragma omp section
72 #pragma omp single /* { dg-warning "may not be closely nested" } */
74 #pragma omp master
76 #pragma omp barrier /* { dg-warning "may not be closely nested" } */
78 #pragma omp task
80 #pragma omp for /* { dg-warning "may not be closely nested" } */
81 for (j = 0; j < 3; j++)
83 #pragma omp sections /* { dg-warning "may not be closely nested" } */
86 #pragma omp section
89 #pragma omp single /* { dg-warning "may not be closely nested" } */
91 #pragma omp master /* { dg-warning "may not be closely nested" } */
93 #pragma omp barrier /* { dg-warning "may not be closely nested" } */
95 #pragma omp parallel
97 #pragma omp for
98 for (j = 0; j < 3; j++)
100 #pragma omp sections
103 #pragma omp section
106 #pragma omp single
108 #pragma omp master
110 #pragma omp barrier
114 void
115 f2 (void)
117 int i, j;
118 #pragma omp ordered
120 #pragma omp for /* { dg-warning "may not be closely nested" } */
121 for (j = 0; j < 3; j++)
123 #pragma omp sections /* { dg-warning "may not be closely nested" } */
126 #pragma omp section
129 #pragma omp single /* { dg-warning "may not be closely nested" } */
131 #pragma omp master
133 #pragma omp barrier /* { dg-warning "may not be closely nested" } */
137 void
138 f3 (void)
140 #pragma omp critical
142 #pragma omp ordered /* { dg-warning "may not be closely nested" } */
147 void
148 f4 (void)
150 #pragma omp task
152 #pragma omp ordered /* { dg-warning "may not be closely nested" } */
157 void
158 f5 (void)
160 int i;
161 #pragma omp for
162 for (i = 0; i < 10; i++)
164 #pragma omp ordered /* { dg-warning "must be closely nested" } */
167 #pragma omp for ordered
168 for (i = 0; i < 10; i++)
170 #pragma omp ordered
175 void
176 f6 (void)
178 #pragma omp critical (foo)
179 #pragma omp critical (bar)
181 #pragma omp critical
182 #pragma omp critical (baz)
186 void
187 f7 (void)
189 #pragma omp critical (foo2)
190 #pragma omp critical
192 #pragma omp critical (bar)
193 #pragma omp critical (bar) /* { dg-warning "may not be nested" } */
195 #pragma omp critical
196 #pragma omp critical /* { dg-warning "may not be nested" } */