1! { dg-do run }
2! { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } }
3
4! Adapted from 'libgomp.oacc-fortran/mdc-refcount-1-2-1.f90'.
5
6program main
7  use openacc
8  implicit none
9  integer, parameter :: n = 512
10  type mytype
11    integer, allocatable :: a(:)
12  end type mytype
13  type(mytype) :: var
14
15  allocate(var%a(1:n))
16
17  !$acc data create(var)
18
19  call acc_create(var%a)
20  ! After mapping via runtime API call, separately trigger attach action; see <https://github.com/OpenACC/openacc-spec/issues/301>.
21  !$acc enter data attach(var%a)
22
23  if (.not. acc_is_present(var%a)) stop 1
24  if (.not. acc_is_present(var)) stop 2
25
26  !$acc exit data detach(var%a)
27  !$acc exit data delete(var%a) finalize
28  if (acc_is_present(var%a)) stop 3
29  if (.not. acc_is_present(var)) stop 4
30
31  !$acc end data
32  if (acc_is_present(var%a)) stop 5
33  if (acc_is_present(var)) stop 6
34
35  deallocate(var%a)
36
37end program main
38