blob: f5d888592b95f35a7f04cbe03d5b4e3ee5245a50 [file] [log] [blame]
! { dg-do compile }
! { dg-options "-fopenmp -fdump-tree-original" }
! PR fortran/78260
module m
implicit none
integer :: n = 0
contains
integer function f1()
!$omp target data map(f1)
!$omp target update to(f1)
f1 = 5
!$omp end target data
end function f1
integer function f2()
dimension :: f2(1)
!$omp target data map(f2)
!$omp target update to(f2)
f2(1) = 5
!$omp end target data
end function f2
integer function f3() result(res)
dimension :: res(1)
!$omp target data map(res)
!$omp target update to(res)
res(1) = 5
!$omp end target data
end function f3
integer function f4() result(res)
allocatable :: res
dimension :: res(:)
!$omp target data map(res)
!$omp target update to(res)
res = [5]
!$omp end target data
end function f4
subroutine sub()
integer, allocatable :: arr(:)
!$omp target data map(arr)
!$omp target update to(arr)
arr = [5]
!$omp end target data
end subroutine sub
end module m
! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) arr.data \\\[len: D.\[0-9\]+ \\* 4\\\]\\) map\\(to:arr \\\[pointer set, len: ..\\\]\\) map\\(alloc:\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) arr.data \\\[pointer assign, bias: 0\\\]\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target update to\\(\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) arr.data \\\[len: D.\[0-9\]+ \\* 4\\\]\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) __result->data \\\[len: D.\[0-9\]+ \\* 4\\\]\\) map\\(to:\\*__result \\\[pointer set, len: ..\\\]\\) map\\(alloc:\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) __result->data \\\[pointer assign, bias: 0\\\]\\) map\\(alloc:__result \\\[pointer assign, bias: 0\\\]\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target update to\\(\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) __result->data \\\[len: D.\[0-9\]+ \\* 4\\\]\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:\\*__result.0\\) map\\(alloc:__result.0 \\\[pointer assign, bias: 0\\\]\\)" 2 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target update to\\(\\*__result.0\\)" 2 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:__result_f1\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target update to\\(__result_f1\\)" 1 "original" } }