(root)/
gcc-13.2.0/
gcc/
testsuite/
gfortran.dg/
goacc/
pr109622-5.f90
! { dg-do compile }

implicit none

type t
integer :: foo
character(len=8) :: bar
integer :: qux(5)
end type t

type(t) :: var

var%foo = 3
var%bar = "HELLOOMP"
var%qux = (/ 1, 2, 3, 4, 5 /) 

!$acc enter data copyin(var)

!$acc enter data attach(var%foo)
! { dg-error "'attach' clause argument must be ALLOCATABLE or a POINTER" "" { target *-*-* } .-1 }
!$acc enter data attach(var%bar)
! { dg-error "'attach' clause argument must be ALLOCATABLE or a POINTER" "" { target *-*-* } .-1 }
!$acc enter data attach(var%qux)
! { dg-error "'attach' clause argument must be ALLOCATABLE or a POINTER" "" { target *-*-* } .-1 }

!$acc serial
var%foo = 5
var%bar = "GOODBYE!"
var%qux = (/ 6, 7, 8, 9, 10 /)
!$acc end serial

!$acc exit data detach(var%qux)
! { dg-error "'detach' clause argument must be ALLOCATABLE or a POINTER" "" { target *-*-* } .-1 }
!$acc exit data detach(var%bar)
! { dg-error "'detach' clause argument must be ALLOCATABLE or a POINTER" "" { target *-*-* } .-1 }
!$acc exit data detach(var%foo)
! { dg-error "'detach' clause argument must be ALLOCATABLE or a POINTER" "" { target *-*-* } .-1 }

!$acc exit data copyout(var)

if (var%foo.ne.5) stop 1
if (var%bar.ne."GOODBYE!") stop 2

end