! { dg-do run } program test implicit none integer, parameter :: N = 100 real, parameter :: PI_CONST = 2.0*acos(0.0) real, parameter :: E_CONST = exp(1.0) real, parameter :: EPSILON = 0.001 integer :: i real :: a(N) !$omp target map(from: a) call f (a, PI_CONST) !$omp end target do i = 1, N if (abs (a(i) - (PI_CONST * i)) .gt. EPSILON) stop 1 end do call f (a, E_CONST) do i = 1, N if (abs (a(i) - (E_CONST * i)) .gt. EPSILON) stop 2 end do contains subroutine f (a, x) integer :: i real :: a(N), x !$omp declare target !$omp metadirective & !$omp& when (construct={target}: distribute parallel do ) & !$omp& default(parallel do simd) do i = 1, N a(i) = x * i end do end subroutine end program