Add Semantic checks for OpenMP 4.5 - 2.7.4 Workshare Construct
- The structured block in a worksahre construct may consist of only scalar or array assignments, forall or where statements, forall, where, atomic, critical or parallel constructs
- All array assignments, scalar assignments, and masked array assignments must be intrinsic assignments.
- The construct must not contain any user defined function calls unless the function is ELEMENTAL.
Resolve related test cases marked XFAIL
I think use of non-elemental function can be outside an assignment statement like in the where statement below.
program mn integer :: a(10) = (/1,2,3,4,5,6,7,8,9,10/) !$omp workshare where ( a .lt. f()) a = a + 5 !$omp end workshare contains integer function f() f = 5 end function end program