| ! RUN: %python %S/test_errors.py %s %flang -fopenmp |
| |
| ! OpenMP Version 5.0 |
| ! Check OpenMP construct validity for the following directives: |
| ! 2.18.1 Cancel Construct |
| |
| program main |
| integer :: i, N = 10 |
| real :: a |
| |
| !ERROR: CANCEL TASKGROUP directive is not closely nested inside TASK or TASKLOOP |
| !$omp cancel taskgroup |
| |
| !ERROR: CANCEL SECTIONS directive is not closely nested inside SECTION or SECTIONS |
| !$omp cancel sections |
| |
| !ERROR: CANCEL DO directive is not closely nested inside the construct that matches the DO clause type |
| !$omp cancel do |
| |
| !ERROR: CANCEL PARALLEL directive is not closely nested inside the construct that matches the PARALLEL clause type |
| !$omp cancel parallel |
| |
| !$omp parallel |
| !$omp sections |
| !$omp cancel sections |
| !$omp section |
| a = 3.14 |
| !$omp end sections |
| !$omp end parallel |
| |
| !$omp sections |
| !$omp section |
| !$omp cancel sections |
| a = 3.14 |
| !$omp end sections |
| |
| !$omp parallel |
| !ERROR: With SECTIONS clause, CANCEL construct cannot be closely nested inside PARALLEL construct |
| !$omp cancel sections |
| a = 3.14 |
| !$omp end parallel |
| |
| !$omp parallel sections |
| !$omp cancel sections |
| a = 3.14 |
| !$omp end parallel sections |
| |
| !$omp do |
| do i = 1, N |
| a = 3.14 |
| !$omp cancel do |
| end do |
| !$omp end do |
| |
| !$omp parallel do |
| do i = 1, N |
| a = 3.14 |
| !$omp cancel do |
| end do |
| !$omp end parallel do |
| |
| !$omp target |
| !$omp teams |
| !$omp distribute parallel do |
| do i = 1, N |
| a = 3.14 |
| !$omp cancel do |
| end do |
| !$omp end distribute parallel do |
| !$omp end teams |
| !$omp end target |
| |
| !$omp target |
| !$omp teams distribute parallel do |
| do i = 1, N |
| a = 3.14 |
| !$omp cancel do |
| end do |
| !$omp end teams distribute parallel do |
| !$omp end target |
| |
| !$omp target teams distribute parallel do |
| do i = 1, N |
| a = 3.14 |
| !$omp cancel do |
| end do |
| !$omp end target teams distribute parallel do |
| |
| !$omp target parallel do |
| do i = 1, N |
| a = 3.14 |
| !$omp cancel do |
| end do |
| !$omp end target parallel do |
| |
| !$omp parallel |
| do i = 1, N |
| a = 3.14 |
| !ERROR: With DO clause, CANCEL construct cannot be closely nested inside PARALLEL construct |
| !$omp cancel do |
| end do |
| !$omp end parallel |
| |
| !$omp parallel |
| do i = 1, N |
| a = 3.14 |
| !$omp cancel parallel |
| end do |
| !$omp end parallel |
| |
| !$omp target parallel |
| do i = 1, N |
| a = 3.14 |
| !$omp cancel parallel |
| end do |
| !$omp end target parallel |
| |
| !$omp target parallel do |
| do i = 1, N |
| a = 3.14 |
| !ERROR: With PARALLEL clause, CANCEL construct cannot be closely nested inside TARGET PARALLEL DO construct |
| !$omp cancel parallel |
| end do |
| !$omp end target parallel do |
| |
| !$omp do |
| do i = 1, N |
| a = 3.14 |
| !ERROR: With PARALLEL clause, CANCEL construct cannot be closely nested inside DO construct |
| !$omp cancel parallel |
| end do |
| !$omp end do |
| |
| contains |
| subroutine sub1() |
| !$omp task |
| !$omp cancel taskgroup |
| a = 3.14 |
| !$omp end task |
| |
| !$omp taskloop |
| do i = 1, N |
| !$omp parallel |
| !$omp end parallel |
| !$omp cancel taskgroup |
| a = 3.14 |
| end do |
| !$omp end taskloop |
| |
| !$omp taskloop nogroup |
| do i = 1, N |
| !$omp cancel taskgroup |
| a = 3.14 |
| end do |
| |
| !$omp parallel |
| !ERROR: With TASKGROUP clause, CANCEL construct must be closely nested inside TASK or TASKLOOP construct and CANCEL region must be closely nested inside TASKGROUP region |
| !$omp cancel taskgroup |
| a = 3.14 |
| !$omp end parallel |
| |
| !$omp do |
| do i = 1, N |
| !$omp task |
| !$omp cancel taskgroup |
| a = 3.14 |
| !$omp end task |
| end do |
| !$omp end do |
| |
| !$omp parallel |
| !$omp taskgroup |
| !$omp task |
| !$omp cancel taskgroup |
| a = 3.14 |
| !$omp end task |
| !$omp end taskgroup |
| !$omp end parallel |
| |
| !$omp parallel |
| !$omp task |
| !ERROR: With TASKGROUP clause, CANCEL construct must be closely nested inside TASK or TASKLOOP construct and CANCEL region must be closely nested inside TASKGROUP region |
| !$omp cancel taskgroup |
| a = 3.14 |
| !$omp end task |
| !$omp end parallel |
| |
| !$omp parallel |
| !$omp do |
| do i = 1, N |
| !$omp task |
| !ERROR: With TASKGROUP clause, CANCEL construct must be closely nested inside TASK or TASKLOOP construct and CANCEL region must be closely nested inside TASKGROUP region |
| !$omp cancel taskgroup |
| a = 3.14 |
| !$omp end task |
| end do |
| !$omp end do |
| !$omp end parallel |
| |
| !$omp target parallel |
| !$omp task |
| !ERROR: With TASKGROUP clause, CANCEL construct must be closely nested inside TASK or TASKLOOP construct and CANCEL region must be closely nested inside TASKGROUP region |
| !$omp cancel taskgroup |
| a = 3.14 |
| !$omp end task |
| !$omp end target parallel |
| |
| !$omp parallel |
| !$omp taskloop private(j) nogroup |
| do i = 1, N |
| !ERROR: With TASKGROUP clause, CANCEL construct must be closely nested inside TASK or TASKLOOP construct and CANCEL region must be closely nested inside TASKGROUP region |
| !$omp cancel taskgroup |
| a = 3.14 |
| end do |
| !$omp end taskloop |
| !$omp end parallel |
| |
| !$omp parallel |
| !$omp taskloop |
| do i = 1, N |
| !$omp cancel taskgroup |
| a = 3.14 |
| end do |
| !$omp end taskloop |
| !$omp end parallel |
| |
| !$omp parallel |
| !$omp taskgroup |
| !$omp taskloop nogroup |
| do i = 1, N |
| !$omp cancel taskgroup |
| a = 3.14 |
| end do |
| !$omp end taskloop |
| !$omp end taskgroup |
| !$omp end parallel |
| |
| !$omp target parallel |
| !$omp taskloop nogroup |
| do i = 1, N |
| !ERROR: With TASKGROUP clause, CANCEL construct must be closely nested inside TASK or TASKLOOP construct and CANCEL region must be closely nested inside TASKGROUP region |
| !$omp cancel taskgroup |
| a = 3.14 |
| end do |
| !$omp end taskloop |
| !$omp end target parallel |
| end subroutine sub1 |
| |
| end program main |