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