1! { dg-do run }
2
3! Test no_create clause with data construct when data is present/not present.
4
5program no_create
6  use openacc
7  implicit none
8  logical :: shared_memory
9  integer, parameter :: n = 512
10  integer :: myvar, myarr(n)
11  integer i
12
13  shared_memory = .false.
14  !$acc kernels copyin (shared_memory)
15  shared_memory = .true.
16  !$acc end kernels
17
18  myvar = 77
19  do i = 1, n
20    myarr(i) = 0
21  end do
22
23  !$acc data no_create (myvar, myarr)
24  if (acc_is_present (myvar) .neqv. shared_memory) stop 10
25  if (acc_is_present (myarr) .neqv. shared_memory) stop 11
26  !$acc end data
27
28  !$acc enter data copyin (myvar, myarr)
29  !$acc data no_create (myvar, myarr)
30  if (acc_is_present (myvar) .eqv. .false.) stop 20
31  if (acc_is_present (myarr) .eqv. .false.) stop 21
32  !$acc end data
33  !$acc exit data copyout (myvar, myarr)
34
35  if (myvar .ne. 77) stop 30
36  do i = 1, n
37    if (myarr(i) .ne. 0) stop 31
38  end do
39end program no_create
40