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