1! Test of gang-private addressable variable declared on loop directive, with
2! broadcasting to partitioned workers.
3
4! { dg-do run }
5
6program main
7  type vec3
8     integer x, y, z, attr(13)
9  end type vec3
10
11  integer x, i, j, arr(0:32*32)
12  type(vec3) pt
13
14  do i = 0, 32*32-1
15     arr(i) = i
16  end do
17
18  !$acc kernels copy(arr)
19  !$acc loop gang(num:32) private(pt)
20  do i = 0, 31
21     pt%x = i
22     pt%y = i * 2
23     pt%z = i * 4
24     pt%attr(5) = i * 6
25
26     !$acc loop vector(length:32)
27     do j = 0, 31
28        arr(i * 32 + j) = arr(i * 32 + j) + pt%x + pt%y + pt%z + pt%attr(5);
29     end do
30  end do
31  !$acc end kernels
32
33  do i = 0, 32 * 32 - 1
34     if (arr(i) .ne. i + (i / 32) * 13) stop 1
35  end do
36end program main
37