! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp -fopenmp-version=52 subroutine mod_task1(x) integer, intent(inout) :: x !Correct: "parallel" directive. !$omp parallel reduction(task, +:x) do i = 1, 100 x = foo(i) enddo !$omp end parallel end subroutine mod_task2(x) integer, intent(inout) :: x !Correct: worksharing directive. !$omp sections reduction(task, +:x) do i = 1, 100 x = foo(i) enddo !$omp end sections end subroutine mod_task3(x) integer, intent(inout) :: x !ERROR: Modifier 'TASK' on REDUCTION clause is only allowed with PARALLEL or worksharing directive !$omp simd reduction(task, +:x) do i = 1, 100 x = foo(i) enddo !$omp end simd end subroutine mod_inscan1(x) integer, intent(inout) :: x !Correct: worksharing-loop directive !$omp do reduction(inscan, +:x) do i = 1, 100 !$omp scan inclusive(x) x = foo(i) enddo !$omp end do end subroutine mod_inscan2(x) integer, intent(inout) :: x !Correct: worksharing-loop simd directive !$omp do simd reduction(inscan, +:x) do i = 1, 100 !$omp scan inclusive(x) x = foo(i) enddo !$omp end do simd end subroutine mod_inscan3(x) integer, intent(inout) :: x !Correct: "simd" directive !$omp simd reduction(inscan, +:x) do i = 1, 100 !$omp scan inclusive(x) x = foo(i) enddo !$omp end simd end subroutine mod_inscan4(x) integer, intent(inout) :: x !ERROR: Modifier 'INSCAN' on REDUCTION clause is only allowed with WORKSHARING LOOP, WORKSHARING LOOP SIMD, or SIMD directive !$omp parallel reduction(inscan, +:x) do i = 1, 100 x = foo(i) enddo !$omp end parallel end subroutine mod_inscan5(x) integer, intent(inout) :: x !ERROR: Modifier 'INSCAN' on REDUCTION clause is only allowed with WORKSHARING LOOP, WORKSHARING LOOP SIMD, or SIMD directive !$omp sections reduction(inscan, +:x) do i = 1, 100 x = foo(i) enddo !$omp end sections end