re PR fortran/78741 (ICE in gfc_get_symbol_decl, at fortran/trans-decl.c:1534)
[official-gcc.git] / gcc / testsuite / gfortran.dg / goacc / tile-1.f90
blob3dbabda0342ea6e9719dfb0b5bc8ee0aa0f3ef82
1 subroutine parloop
2 integer, parameter :: n = 100
3 integer i, j, k, a
5 !$acc parallel loop tile(10)
6 do i = 1, n
7 end do
9 !$acc parallel loop tile(*)
10 do i = 1, n
11 end do
13 !$acc parallel loop tile(10, *)
14 do i = 1, n
15 do j = 1, n
16 end do
17 end do
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
27 !$acc parallel loop tile ! { dg-error "Unclassifiable" }
28 do i = 1, n
29 end do
31 !$acc parallel loop tile() ! { dg-error "Syntax error" }
32 do i = 1, n
33 end do
35 !$acc parallel loop tile(,1) ! { dg-error "Syntax error" }
36 do i = 1, n
37 end do
39 !$acc parallel loop tile(,,) ! { dg-error "Syntax error" }
40 do i = 1, n
41 end do
43 !$acc parallel loop tile(1.1) ! { dg-error "requires a scalar INTEGER" }
44 do i = 1, n
45 end do
47 !$acc parallel loop tile(-3) ! { dg-warning "must be positive" }
48 do i = 1, n
49 end do
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
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
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
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
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
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
88 end subroutine parloop
90 subroutine par
91 integer, parameter :: n = 100
92 integer i, j, k
94 !$acc parallel
95 !$acc loop tile ! { dg-error "Unclassifiable" }
96 do i = 1, n
97 end do
99 !$acc loop tile() ! { dg-error "Syntax error" }
100 do i = 1, n
101 end do
103 !$acc loop tile(1)
104 do i = 1, n
105 end do
107 !$acc loop tile(*)
108 do i = 1, n
109 end do
111 !$acc loop tile(2)
112 do i = 1, n
113 do j = 1, n
114 end do
115 end do
117 !$acc loop tile(-2) ! { dg-warning "must be positive" }
118 do i = 1, n
119 end do
121 !$acc loop tile(i) ! { dg-error "constant expression" }
122 do i = 1, n
123 end do
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
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
139 !$acc loop vector tile(*)
140 do i = 1, n
141 end do
143 !$acc loop worker tile(*)
144 do i = 1, n
145 end do
147 !$acc loop gang tile(*)
148 do i = 1, n
149 end do
151 !$acc loop vector gang tile(*)
152 do i = 1, n
153 end do
155 !$acc loop vector worker tile(*)
156 do i = 1, n
157 end do
159 !$acc loop gang worker tile(*)
160 do i = 1, n
161 end do
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
169 end subroutine par
171 subroutine kern
172 integer, parameter :: n = 100
173 integer i, j, k
175 !$acc kernels
176 !$acc loop tile ! { dg-error "Unclassifiable" }
177 do i = 1, n
178 end do
180 !$acc loop tile() ! { dg-error "Syntax error" }
181 do i = 1, n
182 end do
184 !$acc loop tile(1)
185 do i = 1, n
186 end do
188 !$acc loop tile(*)
189 do i = 1, n
190 end do
192 !$acc loop tile(2)
193 do i = 1, n
194 do j = 1, n
195 end do
196 end do
198 !$acc loop tile(-2) ! { dg-warning "must be positive" }
199 do i = 1, n
200 end do
202 !$acc loop tile(i) ! { dg-error "constant expression" }
203 do i = 1, n
204 end do
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
214 !$acc parallel loop tile(2, 2)
215 do i = 1, n
216 do j = 1, n
217 end do
218 end do
220 !$acc loop vector tile(*)
221 do i = 1, n
222 end do
224 !$acc loop worker tile(*)
225 do i = 1, n
226 end do
228 !$acc loop gang tile(*)
229 do i = 1, n
230 end do
232 !$acc loop vector gang tile(*)
233 do i = 1, n
234 end do
236 !$acc loop vector worker tile(*)
237 do i = 1, n
238 end do
240 !$acc loop gang worker tile(*)
241 do i = 1, n
242 end do
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
250 end subroutine kern
252 subroutine kernsloop
253 integer, parameter :: n = 100
254 integer i, j, k, a
256 !$acc kernels loop tile(10)
257 do i = 1, n
258 end do
260 !$acc kernels loop tile(*)
261 do i = 1, n
262 end do
264 !$acc kernels loop tile(10, *)
265 do i = 1, n
266 do j = 1, n
267 end do
268 end do
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
278 !$acc kernels loop tile ! { dg-error "Unclassifiable" }
279 do i = 1, n
280 end do
282 !$acc kernels loop tile() ! { dg-error "Syntax error" }
283 do i = 1, n
284 end do
286 !$acc kernels loop tile(,1) ! { dg-error "Syntax error" }
287 do i = 1, n
288 end do
290 !$acc kernels loop tile(,,) ! { dg-error "Syntax error" }
291 do i = 1, n
292 end do
294 !$acc kernels loop tile(1.1) ! { dg-error "requires a scalar INTEGER" }
295 do i = 1, n
296 end do
298 !$acc kernels loop tile(-3) ! { dg-warning "must be positive" }
299 do i = 1, n
300 end do
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
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
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
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
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
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
339 end subroutine kernsloop