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
34 lines
927 B
Fortran
34 lines
927 B
Fortran
! RUN: %S/test_errors.sh %s %t %flang -fopenmp
|
|
! OpenMP Version 4.5
|
|
! 2.7.1 Loop Construct
|
|
! The ordered clause must be present on the loop construct if any ordered
|
|
! region ever binds to a loop region arising from the loop construct.
|
|
|
|
program omp_do
|
|
integer i, j, k
|
|
|
|
!$omp do
|
|
do i = 1, 10
|
|
!ERROR: The ORDERED clause must be present on the loop construct if any ORDERED region ever binds to a loop region arising from the loop construct.
|
|
!$omp ordered
|
|
call my_func()
|
|
!$omp end ordered
|
|
end do
|
|
!$omp end do
|
|
|
|
!$omp do ordered private(i)
|
|
do i = 1, 10
|
|
!$omp parallel do
|
|
do j = 1, 10
|
|
print *,i
|
|
!ERROR: The ORDERED clause must be present on the loop construct if any ORDERED region ever binds to a loop region arising from the loop construct.
|
|
!$omp ordered
|
|
print *,i
|
|
!$omp end ordered
|
|
end do
|
|
!$omp end parallel do
|
|
end do
|
|
!$omp end do
|
|
|
|
end program omp_do
|