1 ! RUN: %S/test_errors.sh %s %t %flang -fopenmp
4 ! 2.7.4 workshare Construct
5 ! Checks for OpenMP Workshare construct
7 subroutine omp_workshare(aa
, bb
, cc
, dd
, ee
, ff
, n
)
8 integer i
, j
, n
, a(10), b(10)
11 real aa(n
,n
), bb(n
,n
), cc(n
,n
), dd(n
,n
), ee(n
,n
), ff(n
,n
)
13 !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
21 !ERROR: OpenMP constructs enclosed in WORKSHARE construct may consist of ATOMIC, CRITICAL or PARALLEL constructs only
22 !ERROR: A worksharing region may not be closely nested inside a worksharing, explicit task, taskloop, critical, ordered, atomic, or master region
23 !$omp parallel workshare
24 !ERROR: A worksharing region may not be closely nested inside a worksharing, explicit task, taskloop, critical, ordered, atomic, or master region
28 !$omp end parallel workshare
30 where (aa
.ne
. 0) cc
= bb
/ aa
32 where (b
.lt
. 2) b
= sum(a
)
40 forall (i
= 1:10, n
> i
) a(i
) = b(i
)
51 end subroutine omp_workshare