1! Test of gang-private addressable variable declared on loop directive, with 2! broadcasting to partitioned workers. 3 4! { dg-do run } 5 6! { dg-additional-options "-fopt-info-note-omp" } 7! { dg-additional-options "--param=openacc-privatization=noisy" } 8! { dg-additional-options "-foffload=-fopt-info-note-omp" } 9! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } 10! for testing/documenting aspects of that functionality. 11 12program main 13 type vec3 14 integer x, y, z, attr(13) 15 end type vec3 16 17 integer x, i, j, arr(0:32*32) 18 type(vec3) pt 19 20 do i = 0, 32*32-1 21 arr(i) = i 22 end do 23 24 !$acc kernels copy(arr) 25 !$acc loop gang(num:32) private(pt) 26 ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } 27 ! { dg-note {variable 'pt' in 'private' clause is candidate for adjusting OpenACC privatization level} "" { target *-*-* } .-2 } 28 do i = 0, 31 29 pt%x = i 30 pt%y = i * 2 31 pt%z = i * 4 32 pt%attr(5) = i * 6 33 34 !$acc loop vector(length:32) 35 ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } 36 do j = 0, 31 37 arr(i * 32 + j) = arr(i * 32 + j) + pt%x + pt%y + pt%z + pt%attr(5); 38 end do 39 end do 40 !$acc end kernels 41 42 do i = 0, 32 * 32 - 1 43 if (arr(i) .ne. i + (i / 32) * 13) stop 1 44 end do 45end program main 46