blob: e5981312f1484f9742d741f0e41bb315a63e8135 [file] [log] [blame]
! Test 'allocatable' with OpenACC data clauses.
! See also '../libgomp.fortran/target-allocatable-1-1.f90'.
! { dg-do run }
! { dg-additional-options "-cpp" }
program main
implicit none
integer, allocatable :: a, b, c, d, e
allocate (a)
a = 11
b = 25 ! Implicit allocation.
c = 52 ! Implicit allocation.
!No 'allocate (d)' here.
!No 'allocate (e)' here.
!$acc parallel copyin(a) copy(b, c, d) copyout(e)
if (.not. allocated (a)) stop 1
if (a .ne. 11) stop 2
a = 33
if (.not. allocated (b)) stop 3
if (b .ne. 25) stop 4
if (.not. allocated (c)) stop 5
if (c .ne. 52) stop 6
c = 10
if (allocated (d)) stop 7
d = 42 ! Implicit allocation, but on device only.
if (.not. allocated (d)) stop 8
deallocate (d) ! OpenMP requires must be "unallocated upon exit from the region".
if (allocated (e)) stop 9
e = 24 ! Implicit allocation, but on device only.
if (.not. allocated (e)) stop 10
deallocate (e) ! OpenMP requires must be "unallocated upon exit from the region".
!$acc end parallel
if (.not. allocated (a)) stop 20
#if ACC_MEM_SHARED
if (a .ne. 33) stop 21
#else
if (a .ne. 11) stop 22
#endif
deallocate (a)
if (.not. allocated (b)) stop 23
if (b .ne. 25) stop 24
deallocate (b)
if (.not. allocated (c)) stop 25
if (c .ne. 10) stop 26
deallocate (c)
if (allocated (d)) stop 27
if (allocated (e)) stop 28
end program main