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