| ! { dg-additional-options "-DMEM_SHARED" { target offload_device_shared_as } } |
| ! { dg-do run } |
| ! |
| ! PR middle-end/94635 |
| implicit none |
| integer, parameter :: N = 20 |
| integer, allocatable, dimension(:) :: my1DPtr |
| integer, dimension(N) :: my1DArr |
| integer :: i |
| |
| allocate(my1DPtr(N)) |
| my1DPtr = 43 |
| |
| !$omp target enter data map(alloc: my1DPtr) |
| !$omp target |
| my1DPtr = [(i , i = 1, N)] |
| !$omp end target |
| |
| !$omp target map(from: my1DArr) |
| my1DArr = my1DPtr |
| !$omp end target |
| !$omp target exit data map(delete: my1DPtr) |
| |
| if (any (my1DArr /= [(i, i = 1, N)])) stop 1 |
| #if MEM_SHARED |
| if (any (my1DArr /= my1DPtr)) stop 2 |
| #else |
| if (any (43 /= my1DPtr)) stop 3 |
| #endif |
| |
| my1DPtr = [(2*N-i, i = 1, N)] |
| my1DArr = 42 |
| |
| !$omp target map(tofrom: my1DArr) map(tofrom: my1DPtr(:)) |
| my1DArr = my1DPtr |
| my1DPtr = 20 |
| !$omp end target |
| |
| if (any (my1DArr /= [(2*N-i, i = 1, N)])) stop 4 |
| if (any (20 /= my1DPtr)) stop 6 |
| end |