1! { dg-do compile }
2! { dg-require-effective-target tls }
3
4  integer :: thrpriv, thr, i, j, s, g1, g2, m
5  integer, dimension (6) :: p
6  common /thrblk/ thr
7  common /gblk/ g1
8  save thrpriv, g2
9!$omp threadprivate (/thrblk/, thrpriv)
10  s = 1
11!$omp parallel do default (none) &
12!$omp & private (p) shared (s) ! { dg-error "enclosing 'parallel'" }
13  do i = 1, 64
14    call foo (thrpriv)	! Predetermined - threadprivate
15    call foo (thr)	! Predetermined - threadprivate
16    call foo (i)	! Predetermined - omp do iteration var
17    do j = 1, 64	! Predetermined - sequential loop
18      call foo (j)	! iteration variable
19    end do
20    call bar ((/ (k * 4, k = 1, 8) /)) ! Predetermined - implied do
21    forall (l = 1 : i) &! Predetermined - forall indice
22      p(l) = 6		! Explicitly determined - private
23    call foo (s)	! Explicitly determined - shared
24    call foo (g1)	! { dg-error "not specified in" }
25    call foo (g2)	! { dg-error "not specified in" }
26    call foo (m)	! { dg-error "not specified in" }
27  end do
28end
29