| ! { 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 |