! { dg-do compile } ! { dg-options "-fopenmp" } subroutine foo (v, n, r) integer :: n integer, intent(in) :: v(:) integer, intent(out) :: r integer :: i r = 0 !$omp parallel !$omp single do i = 1, n !$omp task shared (v) r = r + v(i) !$omp end task enddo !$omp end single !$omp end parallel end