! RUN: %python %S/../test_errors.py %s %flang -fopenmp ! OpenMP Version 4.5 ! 2.7.4 workshare Construct ! Checks for OpenMP Workshare construct subroutine omp_workshare(aa, bb, cc, dd, ee, ff, n) integer i, j, n, a(10), b(10) integer, pointer :: p integer, target :: t real aa(n,n), bb(n,n), cc(n,n), dd(n,n), ee(n,n), ff(n,n) !ERROR: The structured block in a WORKSHARE construct may consist of only SCALAR or ARRAY assignments, FORALL or WHERE statements, FORALL, WHERE, ATOMIC, CRITICAL or PARALLEL constructs !$omp workshare p => t !$omp parallel cc = dd !$omp end parallel !ERROR: OpenMP constructs enclosed in WORKSHARE construct may consist of ATOMIC, CRITICAL or PARALLEL constructs only !ERROR: A worksharing region may not be closely nested inside a worksharing, explicit task, taskloop, critical, ordered, atomic, or master region !$omp parallel workshare !ERROR: A worksharing region may not be closely nested inside a worksharing, explicit task, taskloop, critical, ordered, atomic, or master region !$omp single ee = ff !$omp end single !$omp end parallel workshare where (aa .ne. 0) cc = bb / aa where (b .lt. 2) b = sum(a) where (aa .ge. 2.0) cc = aa + bb elsewhere cc = dd + ee end where forall (i = 1:10, n > i) a(i) = b(i) forall (j = 1:10) a(j) = a(j) + b(j) end forall !$omp atomic update j = j + sum(a) !$omp end workshare end subroutine omp_workshare