| ! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp -fopenmp-version=52 |
| ! |
| ! OpenMP Version 5.2 |
| ! |
| ! 2.10.2 single Construct |
| ! Valid and invalid testcases for copyprivate and nowait clause on the single directive |
| |
| program single |
| ! Valid testcases |
| !$omp single |
| print *, x |
| !$omp end single |
| |
| !$omp single nowait |
| print *, x |
| !$omp end single |
| |
| !$omp single copyprivate(x, y, z) |
| print *, x |
| !$omp end single |
| |
| !$omp single |
| print *, x |
| !$omp end single copyprivate(x) |
| |
| ! Invalid testcases |
| !$omp single |
| print *, x |
| !ERROR: NOWAIT clause must not be used with COPYPRIVATE clause on the SINGLE directive |
| !$omp end single copyprivate(x) nowait |
| |
| !ERROR: 'x' appears in more than one COPYPRIVATE clause on the SINGLE directive |
| !$omp single copyprivate(x) copyprivate(x) |
| print *, x |
| !$omp end single |
| |
| !$omp single |
| print *, x |
| !ERROR: 'x' appears in more than one COPYPRIVATE clause on the END SINGLE directive |
| !$omp end single copyprivate(x) copyprivate(x) |
| |
| !ERROR: At most one NOWAIT clause can appear on the SINGLE directive |
| !$omp single nowait nowait |
| print *, x |
| !$omp end single |
| |
| !$omp single |
| print *, x |
| !ERROR: At most one NOWAIT clause can appear on the END SINGLE directive |
| !$omp end single nowait nowait |
| |
| !ERROR: NOWAIT clause must not be used with COPYPRIVATE clause on the SINGLE directive |
| !$omp single copyprivate(x) nowait |
| print *, x |
| !WARNING: The COPYPRIVATE clause with 'x' is already used on the SINGLE directive [-Wopen-mp-usage] |
| !ERROR: At most one NOWAIT clause can appear on the SINGLE directive |
| !$omp end single copyprivate(x) nowait |
| |
| !$omp single copyprivate(x) |
| print *, x |
| !WARNING: The COPYPRIVATE clause with 'x' is already used on the SINGLE directive [-Wopen-mp-usage] |
| !ERROR: NOWAIT clause must not be used with COPYPRIVATE clause on the SINGLE directive |
| !$omp end single copyprivate(x) nowait |
| |
| !ERROR: NOWAIT clause must not be used with COPYPRIVATE clause on the SINGLE directive |
| !$omp single copyprivate(x, y) nowait |
| print *, x |
| !WARNING: The COPYPRIVATE clause with 'x' is already used on the SINGLE directive [-Wopen-mp-usage] |
| !ERROR: 'z' appears in more than one COPYPRIVATE clause on the END SINGLE directive |
| !ERROR: At most one NOWAIT clause can appear on the SINGLE directive |
| !$omp end single copyprivate(x, z) copyprivate(z) nowait |
| |
| !ERROR: NOWAIT clause must not be used with COPYPRIVATE clause on the SINGLE directive |
| !$omp single copyprivate(x) nowait copyprivate(y) copyprivate(z) |
| print *, x |
| !WARNING: The COPYPRIVATE clause with 'x' is already used on the SINGLE directive [-Wopen-mp-usage] |
| !WARNING: The COPYPRIVATE clause with 'y' is already used on the SINGLE directive [-Wopen-mp-usage] |
| !WARNING: The COPYPRIVATE clause with 'z' is already used on the SINGLE directive [-Wopen-mp-usage] |
| !ERROR: At most one NOWAIT clause can appear on the SINGLE directive |
| !$omp end single copyprivate(x, y, z) nowait |
| end program |