mirror of
https://github.com/autc04/Retro68.git
synced 2024-09-08 05:54:40 +00:00
29 lines
575 B
Fortran
29 lines
575 B
Fortran
|
! { dg-do run }
|
||
|
! { dg-require-effective-target tls_runtime }
|
||
|
integer, pointer, save :: thr(:)
|
||
|
!$omp threadprivate (thr)
|
||
|
integer, target :: s(3), t(3), u(3)
|
||
|
integer :: i
|
||
|
logical :: l
|
||
|
s = 2
|
||
|
t = 7
|
||
|
u = 13
|
||
|
thr => t
|
||
|
l = .false.
|
||
|
i = 0
|
||
|
!$omp parallel copyin (thr) reduction(.or.:l) reduction(+:i)
|
||
|
if (any (thr.ne.7)) l = .true.
|
||
|
thr => s
|
||
|
!$omp master
|
||
|
thr => u
|
||
|
!$omp end master
|
||
|
!$omp atomic
|
||
|
thr(1) = thr(1) + 1
|
||
|
i = i + 1
|
||
|
!$omp end parallel
|
||
|
if (l) call abort
|
||
|
if (thr(1).ne.14) call abort
|
||
|
if (s(1).ne.1+i) call abort
|
||
|
if (u(1).ne.14) call abort
|
||
|
end
|