! { dg-do compile } interface subroutine foo end subroutine function bar () integer :: bar end function bar elemental function baz () integer :: baz end function baz end interface integer :: i, j real :: a, b (10), c a = 0.5 b = 0.25 !$omp parallel workshare a = sin (a) b = sin (b) forall (i = 1:10) b(i) = cos (b(i)) - 0.5 j = baz () !$omp parallel if (bar () .gt. 2) & !$omp & num_threads (bar () + 1) i = bar () !$omp end parallel !$omp parallel do schedule (static, bar () + 4) do j = 1, 10 i = bar () end do !$omp end parallel do !$omp end parallel workshare !$omp parallel workshare call foo ! { dg-error "CALL statement" } i = bar () ! { dg-error "non-ELEMENTAL" } !$omp critical i = bar () ! { dg-error "non-ELEMENTAL" } !$omp end critical !$omp atomic j = j + bar () ! { dg-error "non-ELEMENTAL" } !$omp end parallel workshare end