Implementation of Do loop iteration variable check, Do while loop check, Do loop cycle restrictions. Also to check whether the ordered clause is present on the loop construct if any ordered region ever binds to a loop region arising from the loop construct. Files: check-omp-structure.h check-omp-structure.cpp resolve-directives.cpp Testcases: omp-do06-positivecases.f90 omp-do06.f90 omp-do08.f90 omp-do09.f90 omp-do10.f90 omp-do11.f90 omp-do12.f90 omp-do13.f90 omp-do14.f90 omp-do15.f90 omp-do16.f90 omp-do17.f90 Reviewed by: Kiran Chandramohan @kiranchandramohan , Valentin Clement @clementval Differential Revision: https://reviews.llvm.org/D92732
40 lines
1.1 KiB
Fortran
40 lines
1.1 KiB
Fortran
! RUN: %S/test_errors.sh %s %t %f18 -fopenmp
|
|
! OpenMP Version 4.5
|
|
! 2.7.1 Loop Construct
|
|
! The DO loop iteration variable must be of type integer.
|
|
|
|
program omp_do
|
|
real i, j, k
|
|
!$omp do
|
|
!ERROR: The DO loop iteration variable must be of the type integer.
|
|
do i = 1, 10
|
|
!ERROR: The DO loop iteration variable must be of the type integer.
|
|
do j = 1, 10
|
|
print *, "it", i, j
|
|
end do
|
|
end do
|
|
!$omp end do
|
|
|
|
!ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct.
|
|
!$omp do collapse(3)
|
|
!ERROR: The DO loop iteration variable must be of the type integer.
|
|
do i = 1, 10
|
|
!ERROR: The DO loop iteration variable must be of the type integer.
|
|
do j = 1, 10
|
|
print *, "it", i, j
|
|
end do
|
|
end do
|
|
!$omp end do
|
|
|
|
!$omp do collapse(2)
|
|
!ERROR: The DO loop iteration variable must be of the type integer.
|
|
do i = 1, 10
|
|
!ERROR: The DO loop iteration variable must be of the type integer.
|
|
do j = 1, 10
|
|
print *, "it", i, j
|
|
end do
|
|
end do
|
|
!$omp end do
|
|
|
|
end program omp_do
|