blob: 73a7485a63830c8753b62207c090f878452e6de8 [file] [log] [blame]
! { dg-do run }
interface
real function foo (x)
!$omp declare target
real, intent(in) :: x
end function foo
end interface
integer, parameter :: n = 1000
integer, parameter :: c = 100
integer :: i, j
real :: a(n)
do i = 1, n
a(i) = i
end do
!$omp parallel
!$omp single
do i = 1, n, c
!$omp task shared(a)
!$omp target map(a(i:i+c-1))
!$omp parallel do
do j = i, i + c - 1
a(j) = foo (a(j))
end do
!$omp end target
!$omp end task
end do
!$omp end single
!$omp end parallel
do i = 1, n
if (a(i) /= i + 1) stop 1
end do
end
real function foo (x)
!$omp declare target
real, intent(in) :: x
foo = x + 1
end function foo