| ! { dg-do run } |
| |
| program test |
| implicit none |
| |
| integer, parameter :: N = 100 |
| integer :: a(N) |
| integer :: res |
| |
| if (f (a, .false.)) stop 1 |
| if (.not. f (a, .true.)) stop 2 |
| contains |
| logical function f (a, flag) |
| integer :: a(N) |
| logical :: flag |
| logical :: res = .false. |
| integer :: i |
| f = .false. |
| !$omp metadirective & |
| !$omp& when (user={condition(.not. flag)}: & |
| !$omp& target teams distribute parallel do & |
| !$omp& map(from: a(1:N)) private(res)) & |
| !$omp& default(parallel do) |
| do i = 1, N |
| a(i) = i |
| f = .true. |
| end do |
| end function |
| end program |