| ! Testing the Semantics of interchange | |
| !RUN: %python %S/../test_errors.py %s %flang -fopenmp -fopenmp-version=60 | |
| subroutine double_permutation | |
| implicit none | |
| integer i, j | |
| !ERROR: At most one PERMUTATION clause can appear on INTERCHANGE directive | |
| !$omp interchange permutation(2,1) permutation(2,1) | |
| do i = 1, 5 | |
| do j = 1, 5 | |
| print *, i | |
| end do | |
| end do | |
| end subroutine | |
| subroutine zero_parameter | |
| implicit none | |
| integer i, j | |
| !ERROR: The parameter of the PERMUTATION clause must be a constant positive integer expression | |
| !$omp interchange permutation(0,1) | |
| do i = 1, 5 | |
| do j = 1, 5 | |
| print *, i | |
| end do | |
| end do | |
| end subroutine | |
| subroutine negative_parameter | |
| implicit none | |
| integer i, j | |
| !ERROR: The parameter of the PERMUTATION clause must be a constant positive integer expression | |
| !$omp interchange permutation(2,-1) | |
| do i = 1, 5 | |
| do j = 1, 5 | |
| print *, i | |
| end do | |
| end do | |
| end subroutine | |
| subroutine constant_parameter | |
| implicit none | |
| integer i, j, a | |
| !ERROR: Must be a constant value | |
| !$omp interchange permutation(2,a) | |
| do i = 1, 5 | |
| do j = 1, 5 | |
| 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 | |
| !ERROR: PERMUTATION clause was specified with 2 arguments | |
| !$omp interchange permutation(2, 1) | |
| do i = 1, 5 | |
| print *, i | |
| end do | |
| end subroutine | |
| subroutine minimum_parameters | |
| implicit none | |
| integer i, j | |
| !ERROR: The PERMUTATION clause must have a length of at least two | |
| !$omp interchange permutation(1) | |
| do i = 1, 5 | |
| do j = 1, 5 | |
| print *, i | |
| end do | |
| end do | |
| end subroutine | |
| subroutine parameter_number | |
| implicit none | |
| integer i, j | |
| !ERROR: Every integer from 1 must appear in the PERMUTATION clause | |
| !$omp interchange permutation(1,1) | |
| do i = 1, 5 | |
| do j = 1, 5 | |
| print *, i | |
| end do | |
| end do | |
| end subroutine | |
| subroutine parameter_number2 | |
| implicit none | |
| integer i, j | |
| !ERROR: Every integer from 1 must appear in the PERMUTATION clause | |
| !$omp interchange permutation(1,3) | |
| do i = 1, 5 | |
| do j = 1, 5 | |
| print *, i | |
| end do | |
| end do | |
| end subroutine | |