llvm/flang/test/Semantics/OpenMP/private03.f90

! RUN: %python %S/../test_errors.py %s %flang -fopenmp
! OpenMP Version 4.5
! Variables that appear in expressions for statement function definitions
! may not appear in private, firstprivate or lastprivate clauses.

subroutine stmt_function(temp)

  integer :: i, p, q, r
  real :: c, f, s, v, t(10)
  real, intent(in) :: temp

  c(temp) = p * (temp - q) / r
  f(temp) = q + (temp * r/p)
  v(temp) = c(temp) + f(temp)/2 - s

  p = 5
  q = 32
  r = 9

  !ERROR: Variable 'p' in statement function expression cannot be in a PRIVATE clause
  !$omp parallel private(p)
  s = c(temp)
  !$omp end parallel

  !ERROR: Variable 's' in statement function expression cannot be in a FIRSTPRIVATE clause
  !$omp parallel firstprivate(s)
  s = s + f(temp)
  !$omp end parallel

  !ERROR: Variable 's' in statement function expression cannot be in a LASTPRIVATE clause
  !$omp parallel do lastprivate(s, t)
  do i = 1, 10
  t(i) = v(temp) + i - s
  end do
  !$omp end parallel do

  print *, t

end subroutine stmt_function