! { dg-do compile }
! { dg-require-effective-target tls }

  integer :: thrpriv, thr, i, j, s, g1, g2, m
  integer, dimension (6) :: p
  common /thrblk/ thr
  common /gblk/ g1
  save thrpriv, g2
!$omp threadprivate (/thrblk/, thrpriv)
  s = 1
!$omp parallel do default (none) &
!$omp & private (p) shared (s) ! { dg-message "note: enclosing 'parallel'" }
  do i = 1, 64
    call foo (thrpriv)	! Predetermined - threadprivate
    call foo (thr)	! Predetermined - threadprivate
    call foo (i)	! Predetermined - omp do iteration var
    do j = 1, 64	! Predetermined - sequential loop
      call foo (j)	! iteration variable
    end do
    call bar ((/ (k * 4, k = 1, 8) /)) ! Predetermined - implied do
    forall (l = 1 : i) &! Predetermined - forall indice
      p(l) = 6		! Explicitly determined - private
    call foo (s)	! Explicitly determined - shared
    call foo (g1)	! { dg-error "not specified in" }
    call foo (g2)	! { dg-error "not specified in" }
    call foo (m)	! { dg-error "not specified in" }
  end do
end
