1! { dg-do compile }
2! { dg-options "-fopenmp" }
3
4program main
5  integer :: x, i, n
6
7  x = 0
8  n = 10
9
10  !$omp parallel
11  block
12    call do_work
13  end block
14
15  !$omp parallel
16  block
17    call do_work
18  end block
19  !$omp end parallel
20
21  !$omp teams
22  block
23    call do_work
24  end block
25
26  !$omp teams
27  block
28    call do_work
29  end block
30  !$omp end teams
31
32  !$omp masked
33  block
34    x = x + 1
35  end block
36
37  !$omp masked
38  block
39    x = x + 1
40  end block
41  !$omp end masked
42
43  !$omp scope
44  block
45    call do_work
46  end block
47
48  !$omp scope
49  block
50    call do_work
51  end block
52  !$omp end scope
53
54  !$omp single
55  block
56    x = x + 1
57  end block
58
59  !$omp single
60  block
61    x = x + 1
62  end block
63  !$omp end single
64
65  !$omp workshare
66  block
67    x = x + 1
68  end block
69
70  !$omp workshare
71  block
72    x = x + 1
73  end block
74  !$omp end workshare
75
76  !$omp task
77  block
78    call do_work
79  end block
80
81  !$omp task
82  block
83    call do_work
84  end block
85  !$omp end task
86
87  !$omp target data map(x)
88  block
89    x = x + 1
90  end block
91
92  !$omp target data map(x)
93  block
94    x = x + 1
95  end block
96  !$omp end target data
97
98  !$omp target
99  block
100    x = x + 1
101  end block
102
103  !$omp target
104  block
105    x = x + 1
106  end block
107  !$omp end target
108
109  !$omp parallel workshare
110  block
111    x = x + 1
112  end block
113
114  !$omp parallel workshare
115  block
116    x = x + 1
117  end block
118  !$omp end parallel workshare
119
120  !$omp parallel masked
121  block
122    x = x + 1
123  end block
124
125  !$omp parallel masked
126  block
127    x = x + 1
128  end block
129  !$omp end parallel masked
130
131  !$omp target parallel
132  block
133    call do_work
134  end block
135
136  !$omp target parallel
137  block
138    call do_work
139  end block
140  !$omp end target parallel
141
142  !$omp target teams
143  block
144    call do_work
145  end block
146
147  !$omp target teams
148  block
149    call do_work
150  end block
151  !$omp end target teams
152
153  !$omp critical
154  block
155    x = x + 1
156  end block
157
158  !$omp critical
159  block
160    x = x + 1
161  end block
162  !$omp end critical
163
164  !$omp taskgroup
165  block
166    x = x + 1
167  end block
168
169  !$omp taskgroup
170  block
171    x = x + 1
172  end block
173  !$omp end taskgroup
174
175  !$omp do ordered
176  do i = 1, n
177     !$omp ordered
178     block
179       call do_work
180     end block
181  end do
182
183  !$omp do ordered
184  do i = 1, n
185     !$omp ordered
186     block
187       call do_work
188     end block
189     !$omp end ordered
190  end do
191
192  !$omp master
193  block
194    x = x + 1
195  end block
196
197  !$omp master
198  block
199    x = x + 1
200  end block
201  !$omp end master
202
203  !$omp parallel master
204  block
205    x = x + 1
206  end block
207
208  !$omp parallel master
209  block
210    x = x + 1
211  end block
212  !$omp end parallel master
213
214end program
215