Semantic check added to check and restrict the value of the parameter in the COLLAPSE or ORDERED clause if it is larger than the number of nested loops following the construct. Test Cases: omp-do-collapse-positivecases.f90 omp-do-collapse.f90 omp-do-ordered-positivecases.f90 omp-do-ordered.f90 Reviewed by: Kiran Chandramohan @kiranchandramohan , Valentin Clement @clementval Differential Revision: https://reviews.llvm.org/D89860
59 lines
1.6 KiB
Fortran
59 lines
1.6 KiB
Fortran
!RUN: %S/test_errors.sh %s %t %f18 -fopenmp
|
|
! OpenMP Version 4.5
|
|
! 2.7.1 Ordered Clause
|
|
|
|
program omp_doOrdered
|
|
integer:: i,j
|
|
!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 ordered(3)
|
|
do i = 1,10
|
|
do j = 1, 10
|
|
print *, "hello"
|
|
end do
|
|
end do
|
|
!$omp end do
|
|
|
|
do i = 1,10
|
|
do j = 1, 10
|
|
!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 ordered(2)
|
|
do k = 1, 10
|
|
print *, "hello"
|
|
end do
|
|
!$omp end do
|
|
end do
|
|
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 ordered(2)
|
|
do i = 1,10
|
|
!$omp ordered
|
|
do j = 1, 10
|
|
print *, "hello"
|
|
end do
|
|
!$omp end ordered
|
|
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(1) ordered(3)
|
|
do i = 1,10
|
|
do j = 1, 10
|
|
print *, "hello"
|
|
end do
|
|
end do
|
|
!$omp end do
|
|
|
|
!$omp parallel num_threads(4)
|
|
!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 ordered(2) collapse(1)
|
|
do i = 1,10
|
|
!$omp ordered
|
|
do j = 1, 10
|
|
print *, "hello"
|
|
end do
|
|
!$omp end ordered
|
|
end do
|
|
!$omp end parallel
|
|
end program omp_doOrdered
|