1 ! Miscellaneous tests for private variables.
5 ! { dg-additional-options "-fopt-info-note-omp" }
6 ! { dg-additional-options "--param=openacc-privatization=noisy" }
7 ! { dg-additional-options "-foffload=-fopt-info-note-omp" }
8 ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
9 ! for testing/documenting aspects of that functionality.
11 ! { dg-additional-options "-Wopenacc-parallelism" } for testing/documenting
12 ! aspects of that functionality.
14 ! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
15 ! passed to 'incr' may be unset, and in that case, it will be set to [...]",
16 ! so to maintain compatibility with earlier Tcl releases, we manually
17 ! initialize counter variables:
18 ! { dg-line l_dummy[variable c_loop 0] }
19 ! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
20 ! "WARNING: dg-line var l_dummy defined, but not used".
23 ! Test of gang-private variables declared on loop directive.
26 integer :: x
, i
, arr(32)
32 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
33 ! { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .-1 }
34 ! { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .-2 }
35 !$acc loop gang private(x) ! { dg-line l_loop[incr c_loop] }
36 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
37 ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
45 if (arr(i
) .ne
. i
* 3) STOP 1
50 ! Test of gang-private variables declared on loop directive, with broadcasting
51 ! to partitioned workers.
54 integer :: x
, i
, j
, arr(0:32*32)
60 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
61 ! { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .-1 }
62 !$acc loop gang private(x) ! { dg-line l_loop[incr c_loop] }
63 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
64 ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
68 !$acc loop worker ! { dg-line l_loop[incr c_loop] }
69 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
71 arr(i
* 32 + j
) = arr(i
* 32 + j
) + x
77 if (arr(i
) .ne
. i
+ (i
/ 32) * 2) STOP 2
82 ! Test of gang-private variables declared on loop directive, with broadcasting
83 ! to partitioned vectors.
86 integer :: x
, i
, j
, arr(0:32*32)
92 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
93 ! { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .-1 }
94 !$acc loop gang private(x) ! { dg-line l_loop[incr c_loop] }
95 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
96 ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
100 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
101 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
103 arr(i
* 32 + j
) = arr(i
* 32 + j
) + x
108 do i
= 0, 32 * 32 - 1
109 if (arr(i
) .ne
. i
+ (i
/ 32) * 2) STOP 3
114 ! Test of gang-private addressable variable declared on loop directive, with
115 ! broadcasting to partitioned workers.
119 integer x
, y
, z
, attr(13)
122 integer i
, j
, arr(0:32*32)
129 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
130 ! { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .-1 }
131 !$acc loop gang private(pt) ! { dg-line l_loop[incr c_loop] }
132 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
133 ! { dg-note {variable 'pt' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } l_loop$c_loop }
134 ! But, with optimizations enabled, per the '*.ssa' dump ('gcc/tree-ssa.c:execute_update_addresses_taken'):
135 ! No longer having address taken: pt
136 ! However, 'pt' remains in the candidate set:
137 ! { dg-note {variable 'pt' ought to be adjusted for OpenACC privatization level: 'gang'} "" { target *-*-* } l_loop$c_loop }
138 ! Now, for GCN offloading, 'adjust_private_decl' does the privatization change right away:
139 ! { dg-note {variable 'pt' adjusted for OpenACC privatization level: 'gang'} "" { target openacc_radeon_accel_selected } l_loop$c_loop }
140 ! For nvptx offloading however, we first mark up 'pt', and then later apply the privatization change -- or, with optimizations enabled, don't, because we then don't actually call 'expand_var_decl'.
141 ! { dg-note {variable 'pt' adjusted for OpenACC privatization level: 'gang'} "" { target { openacc_nvidia_accel_selected && { ! __OPTIMIZE__ } } } l_loop$c_loop }
142 ! { dg-bogus {note: variable 'pt' adjusted for OpenACC privatization level: 'gang'} "" { target { openacc_nvidia_accel_selected && __OPTIMIZE__ } } l_loop$c_loop }
149 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
150 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
152 arr(i
* 32 + j
) = arr(i
* 32 + j
) + pt
%x
+ pt
%y
+ pt
%z
+ pt
%attr(5);
157 do i
= 0, 32 * 32 - 1
158 if (arr(i
) .ne
. i
+ (i
/ 32) * 13) STOP 4
163 ! Test of vector-private variables declared on loop directive.
166 integer :: x
, i
, j
, k
, idx
, arr(0:32*32*32)
172 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
173 !$acc loop gang ! { dg-line l_loop[incr c_loop] }
174 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
176 !$acc loop worker ! { dg-line l_loop[incr c_loop] }
177 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
179 !$acc loop vector private(x) ! { dg-line l_loop[incr c_loop] }
180 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
181 ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
184 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + x
* k
186 !$acc loop vector private(x) ! { dg-line l_loop[incr c_loop] }
187 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
188 ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
191 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + x
* k
200 idx
= i
* 1024 + j
* 32 + k
201 if (arr(idx
) .ne
. idx
+ ieor(i
, j
* 3) * k
+ ior(i
, j
* 5) * k
) then
210 ! Test of vector-private variables declared on loop directive. Array type.
213 integer :: i
, j
, k
, idx
, arr(0:32*32*32), pt(2)
219 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
220 !$acc loop gang ! { dg-line l_loop[incr c_loop] }
221 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
223 !$acc loop worker ! { dg-line l_loop[incr c_loop] }
224 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
226 !$acc loop vector private(x, pt) ! { dg-line l_loop[incr c_loop] }
227 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
228 ! { dg-bogus {note: variable 'x' in 'private' clause} "" { target *-*-* } l_loop$c_loop }
229 ! { dg-note {variable 'pt' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } l_loop$c_loop }
230 ! { dg-note {variable 'pt' ought to be adjusted for OpenACC privatization level: 'vector'} "" { target *-*-* } l_loop$c_loop }
231 ! { dg-note {variable 'pt' adjusted for OpenACC privatization level: 'vector'} "" { target { ! openacc_host_selected } } l_loop$c_loop }
233 pt(1) = ieor(i
, j
* 3)
234 pt(2) = ior(i
, j
* 5)
235 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + pt(1) * k
236 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + pt(2) * k
245 idx
= i
* 1024 + j
* 32 + k
246 if (arr(idx
) .ne
. idx
+ ieor(i
, j
* 3) * k
+ ior(i
, j
* 5) * k
) then
255 ! Test of worker-private variables declared on a loop directive.
258 integer :: x
, i
, j
, arr(0:32*32)
265 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
266 ! { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .-1 }
267 !$acc loop gang private(x) ! { dg-line l_loop[incr c_loop] }
268 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
269 ! { dg-bogus {note: variable 'x' in 'private' clause} "" { target *-*-* } l_loop$c_loop }
271 !$acc loop worker private(x) ! { dg-line l_loop[incr c_loop] }
272 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
273 ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
276 arr(i
* 32 + j
) = arr(i
* 32 + j
) + x
281 do i
= 0, 32 * 32 - 1
282 if (arr(i
) .ne
. i
+ ieor(i
/ 32, mod(i
, 32) * 3)) STOP 7
287 ! Test of worker-private variables declared on a loop directive, broadcasting
288 ! to vector-partitioned mode.
291 integer :: x
, i
, j
, k
, idx
, arr(0:32*32*32)
297 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
298 !$acc loop gang ! { dg-line l_loop[incr c_loop] }
299 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
301 !$acc loop worker private(x) ! { dg-line l_loop[incr c_loop] }
302 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
303 ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
307 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
308 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
310 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + x
* k
319 idx
= i
* 1024 + j
* 32 + k
320 if (arr(idx
) .ne
. idx
+ ieor(i
, j
* 3) * k
) STOP 8
327 ! Test of worker-private variables declared on a loop directive, broadcasting
328 ! to vector-partitioned mode. Back-to-back worker loops.
331 integer :: x
, i
, j
, k
, idx
, arr(0:32*32*32)
337 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
338 !$acc loop gang ! { dg-line l_loop[incr c_loop] }
339 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
341 !$acc loop worker private(x) ! { dg-line l_loop[incr c_loop] }
342 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
343 ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
347 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
348 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
350 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + x
* k
354 !$acc loop worker private(x) ! { dg-line l_loop[incr c_loop] }
355 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
356 ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
360 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
361 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
363 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + x
* k
372 idx
= i
* 1024 + j
* 32 + k
373 if (arr(idx
) .ne
. idx
+ ieor(i
, j
* 3) * k
+ ior(i
, j
* 5) * k
) then
382 ! Test of worker-private variables declared on a loop directive, broadcasting
383 ! to vector-partitioned mode. Successive vector loops. */
386 integer :: x
, i
, j
, k
, idx
, arr(0:32*32*32)
392 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
393 !$acc loop gang ! { dg-line l_loop[incr c_loop] }
394 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
396 !$acc loop worker private(x) ! { dg-line l_loop[incr c_loop] }
397 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
398 ! { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
402 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
403 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
405 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + x
* k
410 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
411 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
413 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + x
* k
422 idx
= i
* 1024 + j
* 32 + k
423 if (arr(idx
) .ne
. idx
+ ieor(i
, j
* 3) * k
+ ior(i
, j
* 5) * k
) then
432 ! Test of worker-private variables declared on a loop directive, broadcasting
433 ! to vector-partitioned mode. Addressable worker variable.
436 integer :: i
, j
, k
, idx
, arr(0:32*32*32)
438 integer, pointer :: p
444 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
445 !$acc loop gang ! { dg-line l_loop[incr c_loop] }
446 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
448 !$acc loop worker private(x, p) ! { dg-line l_loop[incr c_loop] }
449 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
450 ! { dg-note {variable 'x' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } l_loop$c_loop }
451 ! { dg-note {variable 'x' ought to be adjusted for OpenACC privatization level: 'worker'} "" { target *-*-* } l_loop$c_loop }
452 ! { dg-note {variable 'x' adjusted for OpenACC privatization level: 'worker'} "TODO" { target { ! openacc_host_selected } xfail *-*-* } l_loop$c_loop }
453 ! { dg-note {variable 'p' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
458 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
459 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
461 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + x
* k
466 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
467 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
469 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + x
* k
478 idx
= i
* 1024 + j
* 32 + k
479 if (arr(idx
) .ne
. idx
+ ieor(i
, j
* 3) * k
+ ior(i
, j
* 5) * k
) then
488 ! Test of worker-private variables declared on a loop directive, broadcasting
489 ! to vector-partitioned mode. Aggregate worker variable.
496 integer :: i
, j
, k
, idx
, arr(0:32*32*32)
503 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
504 !$acc loop gang ! { dg-line l_loop[incr c_loop] }
505 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
507 !$acc loop worker private(pt) ! { dg-line l_loop[incr c_loop] }
508 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
509 ! { dg-note {variable 'pt' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
511 pt
%x
= ieor(i
, j
* 3)
514 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
515 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
517 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + pt
%x
* k
520 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
521 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
523 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + pt
%y
* k
532 idx
= i
* 1024 + j
* 32 + k
533 if (arr(idx
) .ne
. idx
+ ieor(i
, j
* 3) * k
+ ior(i
, j
* 5) * k
) then
542 ! Test of worker-private variables declared on loop directive, broadcasting
543 ! to vector-partitioned mode. Array worker variable.
546 integer :: i
, j
, k
, idx
, arr(0:32*32*32), pt(2)
552 !$acc parallel copy(arr) num_gangs(32) num_workers(8) vector_length(32)
553 !$acc loop gang ! { dg-line l_loop[incr c_loop] }
554 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
556 !$acc loop worker private(pt) ! { dg-line l_loop[incr c_loop] }
557 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
558 ! { dg-note {variable 'pt' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } l_loop$c_loop }
559 ! { dg-note {variable 'pt' ought to be adjusted for OpenACC privatization level: 'worker'} "" { target *-*-* } l_loop$c_loop }
560 ! { dg-note {variable 'pt' adjusted for OpenACC privatization level: 'worker'} "TODO" { target { ! openacc_host_selected } xfail *-*-* } l_loop$c_loop } */
562 pt(1) = ieor(i
, j
* 3)
563 pt(2) = ior(i
, j
* 5)
565 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
566 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
568 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + pt(1) * k
571 !$acc loop vector ! { dg-line l_loop[incr c_loop] }
572 ! { dg-note {variable 'k' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
574 arr(i
* 1024 + j
* 32 + k
) = arr(i
* 1024 + j
* 32 + k
) + pt(2) * k
583 idx
= i
* 1024 + j
* 32 + k
584 if (arr(idx
) .ne
. idx
+ ieor(i
, j
* 3) * k
+ ior(i
, j
* 5) * k
) then
593 ! Test of gang-private variables declared on the parallel directive.
598 integer, parameter :: n
= 32
605 !$acc parallel private(x) copy(arr) num_gangs(n) num_workers(8) vector_length(32)
606 ! { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .-1 }
607 ! { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .-2 }
608 !$acc loop gang(static:1) ! { dg-line l_loop[incr c_loop] }
609 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
614 !$acc loop gang(static:1) ! { dg-line l_loop[incr c_loop] }
615 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
617 ! { dg-note {variable 'C\.[0-9]+' declared in block potentially has improper OpenACC privatization level: 'const_decl'} "TODO" { target *-*-* } l_loop$c_loop }
618 !TODO Unhandled 'CONST_DECL' instance for constant argument in 'acc_on_device' call.
619 if (acc_on_device (acc_device_host
) .eqv
. .TRUE
.) x
= i
* 2
625 if (arr(i
) .ne
. (3 + i
* 2)) STOP 14