mirror of git://gcc.gnu.org/git/gcc.git
30 lines
716 B
Fortran
30 lines
716 B
Fortran
! { dg-do run }
|
|
! { dg-require-effective-target omp_managedmem }
|
|
|
|
! Check that omp_alloc can allocate Managed Memory, and that host and target
|
|
! can see the data, at the same address, without a mapping.
|
|
|
|
program main
|
|
use omp_lib
|
|
use iso_c_binding
|
|
implicit none
|
|
|
|
type(c_ptr) :: cptr
|
|
integer, pointer :: a
|
|
integer(c_intptr_t) :: a_p, a_p2
|
|
|
|
cptr = omp_alloc(c_sizeof(a), ompx_gnu_managed_mem_alloc)
|
|
if (.not. c_associated(cptr)) stop 1
|
|
|
|
call c_f_pointer(cptr, a)
|
|
a = 42
|
|
a_p = transfer(c_loc(a), a_p)
|
|
|
|
!$omp target is_device_ptr(a)
|
|
a_p2 = transfer(c_loc(a), a_p2)
|
|
if (a /= 42 .or. a_p /= a_p2) stop 2
|
|
!$omp end target
|
|
|
|
call omp_free(cptr, ompx_gnu_managed_mem_alloc)
|
|
end program main
|