1 ! RUN: %python %S/../test_errors.py %s %flang -fopenmp
3 ! 2.7.4 workshare Construct
4 ! Checks for OpenMP Workshare construct
6 subroutine omp_workshare(aa
, bb
, cc
, dd
, ee
, ff
, n
)
7 integer i
, j
, n
, a(10), b(10)
10 real aa(n
,n
), bb(n
,n
), cc(n
,n
), dd(n
,n
), ee(n
,n
), ff(n
,n
)
12 !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
20 !ERROR: OpenMP constructs enclosed in WORKSHARE construct may consist of ATOMIC, CRITICAL or PARALLEL constructs only
21 !ERROR: A worksharing region may not be closely nested inside a worksharing, explicit task, taskloop, critical, ordered, atomic, or master region
22 !$omp parallel workshare
23 !ERROR: A worksharing region may not be closely nested inside a worksharing, explicit task, taskloop, critical, ordered, atomic, or master region
27 !$omp end parallel workshare
29 where (aa
.ne
. 0) cc
= bb
/ aa
31 where (b
.lt
. 2) b
= sum(a
)
39 forall (i
= 1:10, n
> i
) a(i
) = b(i
)
50 end subroutine omp_workshare