1! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp 2! OpenMP Version 4.5 3! 2.7.1 Loop Construct 4! The loop iteration variable may not appear in a threadprivate directive. 5 6 7subroutine omp_do 8 integer, save:: i, j, k,n 9 !$omp threadprivate(k,j,i) 10 !$omp do collapse(2) 11 !ERROR: Loop iteration variable i is not allowed in THREADPRIVATE. 12 do i = 1, 10 13 !ERROR: Loop iteration variable j is not allowed in THREADPRIVATE. 14 do j = 1, 10 15 print *, "Hello" 16 end do 17 end do 18 !$omp end do 19end subroutine omp_do 20 21subroutine omp_do1 22 integer, save :: i, j, k 23 !$omp threadprivate(k,j,i) 24 !$omp do 25 !ERROR: Loop iteration variable i is not allowed in THREADPRIVATE. 26 do i = 1, 10 27 do j = 1, 10 28 print *, "Hello" 29 end do 30 end do 31 !$omp end do 32 33end subroutine omp_do1 34 35subroutine omp_do2 36 integer, save :: k, j 37 !$omp threadprivate(k) 38 !$omp threadprivate(j) 39 call compute() 40 contains 41 subroutine compute() 42 !$omp do ordered(1) collapse(1) 43 !ERROR: Loop iteration variable k is not allowed in THREADPRIVATE. 44 foo: do k = 1, 10 45 do i = 1, 10 46 print *, "Hello" 47 end do 48 end do foo 49 !$omp end do 50 end subroutine 51 52end subroutine omp_do2 53 54subroutine omp_do3 55 integer, save :: i 56 !$omp threadprivate(i) 57 !$omp parallel 58 print *, "parallel" 59 !$omp end parallel 60 !$omp do 61 !ERROR: Loop iteration variable i is not allowed in THREADPRIVATE. 62 do i = 1, 10 63 do j = 1, 10 64 print *, "Hello" 65 end do 66 end do 67 !$omp end do 68 69end subroutine omp_do3 70 71module tp 72 !integer i,j 73 integer, save:: i, j, k,n 74 !$omp threadprivate(i) 75 !$omp threadprivate(j) 76end module tp 77 78module usetp 79 use tp 80end module usetp 81 82subroutine main 83 use usetp 84 !$omp do 85 !ERROR: Loop iteration variable i is not allowed in THREADPRIVATE. 86 do i = 1, 10 87 do j = 1, 10 88 print *, "Hello" 89 end do 90 end do 91 !$omp end do 92end subroutine 93 94subroutine main1 95 use tp 96 !$omp do 97 !ERROR: Loop iteration variable j is not allowed in THREADPRIVATE. 98 do j = 1, 10 99 do i = 1, 10 100 print *, "Hello" 101 end do 102 end do 103 !$omp end do 104end subroutine 105