| ! { 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 |