! RUN: %python %S/../test_errors.py %s %flang -fopenmp ! OpenMP Version 4.5 ! 2.7.4 workshare Construct ! The !omp workshare construct must not contain any user defined ! function calls unless the function is ELEMENTAL. module my_mod contains integer function my_func() my_func = 10 end function my_func end module my_mod subroutine workshare(aa, bb, cc, dd, ee, ff, n) use my_mod integer n, i, j real aa(n), bb(n), cc(n), dd(n), ee(n), ff(n) !$omp workshare !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct aa = my_func() cc = dd ee = ff !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct where (aa .ne. my_func()) aa = bb * cc !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct where (dd .lt. 5) dd = aa * my_func() !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct where (aa .ge. my_func()) !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct cc = aa + my_func() !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct elsewhere (aa .le. my_func()) !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct cc = dd + my_func() elsewhere !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct cc = ee + my_func() end where !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct forall (j = 1:my_func()) aa(j) = aa(j) + bb(j) forall (j = 1:10) aa(j) = aa(j) + bb(j) !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct where (cc .le. j) cc = cc + my_func() end forall !$omp atomic update !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct j = j + my_func() !$omp atomic capture i = j !ERROR: User defined non-ELEMENTAL function 'my_func' is not allowed in a WORKSHARE construct j = j - my_func() !$omp end atomic !$omp end workshare end subroutine workshare