module m integer :: v interface subroutine foo(i) integer :: i end end interface end subroutine bar use m implicit none integer :: i !$omp do reduction (task, +: v) ! { dg-error "'task' reduction modifier on a construct with a 'nowait' clause" } do i = 0, 63 call foo (i) end do !$omp end do nowait !$omp sections reduction (task, +: v) ! { dg-error "'task' reduction modifier on a construct with a 'nowait' clause" } call foo (-2) !$omp section call foo (-3) !$omp end sections nowait !$omp scope reduction (task, +: v) ! { dg-error "'task' reduction modifier on a construct with a 'nowait' clause" } call foo (-4) !$omp end scope nowait !$omp simd reduction (task, +: v) ! { dg-error "invalid 'task' reduction modifier on construct other than 'parallel', 'do', 'sections' or 'scope'" } do i = 0, 63 v = v + 1 end do !$omp do simd reduction (task, +: v) ! { dg-error "invalid 'task' reduction modifier on construct other than 'parallel', 'do', 'sections' or 'scope'" } do i = 0, 63 v = v + 1 end do !$omp parallel do simd reduction (task, +: v) ! { dg-error "invalid 'task' reduction modifier on construct other than 'parallel', 'do', 'sections' or 'scope'" } do i = 0, 63 v = v + 1 end do !$omp end parallel do simd !$omp teams distribute parallel do simd reduction (task, +: v) ! { dg-error "invalid 'task' reduction modifier on construct other than 'parallel', 'do', 'sections' or 'scope'" } do i = 0, 63 v = v + 1 end do !$omp end teams distribute parallel do simd end