| ! RUN: %python %S/test_errors.py %s %flang -fopenmp |
| ! OpenMP Version 4.5 |
| ! 2.7.4 workshare Construct |
| ! Invalid do construct inside !$omp workshare |
| |
| subroutine workshare(aa, bb, cc, dd, ee, ff, n) |
| integer n, i |
| 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 |
| !ERROR: OpenMP constructs enclosed in WORKSHARE construct may consist of ATOMIC, CRITICAL or PARALLEL constructs only |
| !$omp workshare |
| do i = 1, n |
| print *, "omp workshare" |
| end do |
| |
| !$omp critical |
| !ERROR: A worksharing region may not be closely nested inside a worksharing, explicit task, taskloop, critical, ordered, atomic, or master region |
| !$omp single |
| aa = bb |
| !$omp end single |
| !$omp end critical |
| |
| !$omp parallel |
| !$omp single |
| cc = dd |
| !$omp end single |
| !$omp end parallel |
| |
| ee = ff |
| !$omp end workshare |
| |
| end subroutine workshare |