| ! { dg-additional-sources my-usleep.c } |
| ! { dg-prune-output "command-line option '-fintrinsic-modules-path=.*' is valid for Fortran but not for C" } |
| program main |
| implicit none |
| interface |
| subroutine usleep(t) bind(C, name="my_usleep") |
| use iso_c_binding |
| integer(c_int), value :: t |
| end subroutine |
| end interface |
| |
| integer :: a(128) |
| integer :: i |
| |
| !$omp parallel num_threads(8) |
| !$omp barrier |
| !$omp do schedule (dynamic, 2) order(reproducible:concurrent) |
| do i = 1, 128 |
| a(i) = i |
| if (i == 1) then |
| call usleep (20) |
| else if (i == 18) then |
| call usleep (40) |
| end if |
| end do |
| !$omp end do nowait |
| !$omp do schedule (dynamic, 2) order(reproducible:concurrent) |
| do i = 1, 128 |
| a(i) = a(i) + i |
| end do |
| !$omp end do nowait |
| !$omp end parallel |
| do i = 1, 128 |
| if (a(i) /= 2 * i) & |
| stop |
| end do |
| end program main |