| ! RUN: %python %S/../test_errors.py %s %flang -fopenmp |
| |
| ! 2.15.3 Although variables in common blocks can be accessed by use association |
| ! or host association, common block names cannot. As a result, a common block |
| ! name specified in a data-sharing attribute clause must be declared to be a |
| ! common block in the same scoping unit in which the data-sharing attribute |
| ! clause appears. |
| |
| common /c/ a, b |
| integer a(3), b |
| common /tc/ x |
| integer x |
| !$omp threadprivate(/tc/) |
| |
| A = 1 |
| B = 2 |
| block |
| !ERROR: COMMON block must be declared in the same scoping unit in which the OpenMP directive or clause appears |
| !$omp parallel shared(/c/) |
| a(1:2) = 3 |
| B = 4 |
| !$omp end parallel |
| end block |
| print *, a, b |
| |
| !$omp parallel |
| block |
| !$omp single |
| x = 18 |
| !ERROR: COMMON block must be declared in the same scoping unit in which the OpenMP directive or clause appears |
| !$omp end single copyprivate(/tc/) |
| end block |
| !$omp end parallel |
| |
| ! Common block names may be used inside nested OpenMP directives. |
| !$omp parallel |
| !$omp parallel copyin(/tc/) |
| x = x + 10 |
| !$omp end parallel |
| !$omp end parallel |
| |
| !$omp parallel |
| !$omp single |
| x = 18 |
| !$omp end single copyprivate(/tc/) |
| !$omp end parallel |
| end |