blob: 5fb29816c42f6dc93c306e236c71bad528abea01 [file] [log] [blame]
! Test ACC UPDATE with derived types.
module dt
integer, parameter :: n = 10
type inner
integer :: d(n)
end type inner
type dtype
integer(8) :: a, b, c(n)
type(inner) :: in
end type dtype
end module dt
program derived_acc
use dt
implicit none
type(dtype):: var
integer i
!$acc declare create(var)
!$acc declare pcopy(var%a) ! { dg-error "Syntax error in OpenMP" }
!$acc update host(var)
!$acc update host(var%a)
!$acc update device(var)
!$acc update device(var%a)
!$acc update self(var)
!$acc update self(var%a)
!$acc enter data copyin(var)
!$acc enter data copyin(var%a)
!$acc exit data copyout(var)
!$acc exit data copyout(var%a)
!$acc data copy(var)
!$acc end data
!$acc data copyout(var%a)
!$acc end data
!$acc parallel loop pcopyout(var)
do i = 1, 10
end do
!$acc end parallel loop
!$acc parallel loop copyout(var%a)
do i = 1, 10
end do
!$acc end parallel loop
!$acc parallel pcopy(var)
!$acc end parallel
!$acc parallel pcopy(var%a)
do i = 1, 10
end do
!$acc end parallel
!$acc kernels pcopyin(var)
!$acc end kernels
!$acc kernels pcopy(var%a)
do i = 1, 10
end do
!$acc end kernels
!$acc kernels loop pcopyin(var)
do i = 1, 10
end do
!$acc end kernels loop
!$acc kernels loop pcopy(var%a)
do i = 1, 10
end do
!$acc end kernels loop
end program derived_acc