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