1! RUN: %S/test_errors.sh %s %t %flang_fc1 -fopenmp
2! REQUIRES: shell
3! OpenMP Version 4.5
4! 2.15.3.5 lastprivate Clause
5! A variable that appears in a lastprivate clause must be definable.
6
7module protected_var
8  integer, protected :: p
9end module protected_var
10
11program omp_lastprivate
12  use protected_var
13  integer :: i, a(10), b(10), c(10)
14  integer, parameter :: k = 10
15
16  a = 10
17  b = 20
18
19  !ERROR: Variable 'k' on the LASTPRIVATE clause is not definable
20  !$omp parallel do lastprivate(k)
21  do i = 1, 10
22    c(i) = a(i) + b(i) + k
23  end do
24  !$omp end parallel do
25
26  !ERROR: Variable 'p' on the LASTPRIVATE clause is not definable
27  !$omp parallel do lastprivate(p)
28  do i = 1, 10
29    c(i) = a(i) + b(i) + k
30  end do
31  !$omp end parallel do
32
33  call omp_lastprivate_sb(i)
34
35  print *, c
36
37end program omp_lastprivate
38
39subroutine omp_lastprivate_sb(m)
40  integer :: i, a(10), b(10), c(10)
41  integer, intent(in) :: m
42
43  a = 10
44  b = 20
45
46  !ERROR: Variable 'm' on the LASTPRIVATE clause is not definable
47  !$omp parallel do lastprivate(m)
48  do i = 1, 10
49    c(i) = a(i) + b(i) + m
50  end do
51  !$omp end parallel do
52
53  print *, c
54
55end subroutine omp_lastprivate_sb
56