| ! Testing the Semantics of interchange | |
| !RUN: %python %S/../test_errors.py %s %flang -fopenmp -fopenmp-version=51 | |
| subroutine on_unroll | |
| implicit none | |
| integer i, j | |
| !ERROR: This construct requires a canonical loop nest | |
| !$omp interchange | |
| !BECAUSE: Fully unrolled loop does not result in a loop nest | |
| !$omp unroll | |
| do i = 1, 5 | |
| do j = 1, 5 | |
| print *, i | |
| end do | |
| end do | |
| end subroutine | |
| subroutine loop_assoc | |
| implicit none | |
| integer :: i, j | |
| !ERROR: This construct requires a canonical loop nest | |
| !$omp interchange | |
| !BECAUSE: DO WHILE loop is not a valid affected loop | |
| do while (i <= 10) | |
| do j = 1, 5 | |
| i = i + 1 | |
| print *, i | |
| end do | |
| end do | |
| end subroutine | |
| subroutine insufficient_loops | |
| implicit none | |
| integer i | |
| !ERROR: This construct requires a perfect nest of depth 2, but the associated nest is a perfect nest of depth 1 | |
| !BECAUSE: PERMUTATION clause was not specified, a permutation (2, 1) is assumed | |
| !$omp interchange | |
| do i = 1, 5 | |
| print *, i | |
| end do | |
| end subroutine | |