! { dg-do run } module typemod type mytype integer :: a end type mytype contains subroutine mysub(c) implicit none class(mytype), allocatable :: c !$acc parallel copy(c) c%a = 5 !$acc end parallel end subroutine mysub end module typemod program main use typemod implicit none class(mytype), allocatable :: myvar allocate(mytype :: myvar) myvar%a = 0 call mysub(myvar) if (myvar%a .ne. 5) stop 1 end program main