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