1*404b540aSrobert! { dg-do run } 2*404b540aSrobert 3*404b540aSrobert use omp_lib 4*404b540aSrobert integer :: i, j, k, m, n 5*404b540aSrobert logical :: l 6*404b540aSrobert equivalence (i, m) 7*404b540aSrobert equivalence (j, n) 8*404b540aSrobert i = 4 9*404b540aSrobert j = 8 10*404b540aSrobert l = .false. 11*404b540aSrobert!$omp parallel private (k) firstprivate (i) shared (j) num_threads (2) & 12*404b540aSrobert!$omp& reduction (.or.:l) 13*404b540aSrobert l = l .or. i .ne. 4 14*404b540aSrobert l = l .or. j .ne. 8 15*404b540aSrobert!$omp barrier 16*404b540aSrobert k = omp_get_thread_num () 17*404b540aSrobert if (k .eq. 0) then 18*404b540aSrobert i = 14 19*404b540aSrobert j = 15 20*404b540aSrobert end if 21*404b540aSrobert!$omp barrier 22*404b540aSrobert if (k .eq. 1) then 23*404b540aSrobert if (i .ne. 4 .or. j .ne. 15) l = .true. 24*404b540aSrobert i = 24 25*404b540aSrobert j = 25 26*404b540aSrobert end if 27*404b540aSrobert!$omp barrier 28*404b540aSrobert if (j .ne. 25 .or. i .ne. (k * 10 + 14)) l = .true. 29*404b540aSrobert!$omp end parallel 30*404b540aSrobert if (l) call abort 31*404b540aSrobert if (j .ne. 25) call abort 32*404b540aSrobertend 33