! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp
! OpenMP Version 4.5
! 2.7.1 Loop Construct
! The loop iteration variable may not appear in a threadprivate directive.
subroutine omp_do
integer, save:: i, j, k,n
!$omp threadprivate(k,j,i)
!$omp do collapse(2)
!ERROR: Loop iteration variable i is not allowed in THREADPRIVATE.
do i = 1, 10
!ERROR: Loop iteration variable j is not allowed in THREADPRIVATE.
do j = 1, 10
print *, "Hello"
end do
end do
!$omp end do
end subroutine omp_do
subroutine omp_do1
integer, save :: i, j, k
!$omp threadprivate(k,j,i)
!$omp do
!ERROR: Loop iteration variable i is not allowed in THREADPRIVATE.
do i = 1, 10
do j = 1, 10
print *, "Hello"
end do
end do
!$omp end do
end subroutine omp_do1
subroutine omp_do2
integer, save :: k, j
!$omp threadprivate(k)
!$omp threadprivate(j)
call compute()
contains
subroutine compute()
!$omp do ordered(1) collapse(1)
!ERROR: Loop iteration variable k is not allowed in THREADPRIVATE.
foo: do k = 1, 10
do i = 1, 10
print *, "Hello"
end do
end do foo
!$omp end do
end subroutine
end subroutine omp_do2
subroutine omp_do3
integer, save :: i
!$omp threadprivate(i)
!$omp parallel
print *, "parallel"
!$omp end parallel
!$omp do
!ERROR: Loop iteration variable i is not allowed in THREADPRIVATE.
do i = 1, 10
do j = 1, 10
print *, "Hello"
end do
end do
!$omp end do
end subroutine omp_do3
module tp
!integer i,j
integer, save:: i, j, k,n
!$omp threadprivate(i)
!$omp threadprivate(j)
end module tp
module usetp
use tp
end module usetp
subroutine main
use usetp
!$omp do
!ERROR: Loop iteration variable i is not allowed in THREADPRIVATE.
do i = 1, 10
do j = 1, 10
print *, "Hello"
end do
end do
!$omp end do
end subroutine
subroutine main1
use tp
!$omp do
!ERROR: Loop iteration variable j is not allowed in THREADPRIVATE.
do j = 1, 10
do i = 1, 10
print *, "Hello"
end do
end do
!$omp end do
end subroutine