! { dg-do run }

  integer :: a, b, c
  a = 1
  b = 2
  c = 3
  call foo
  if (a .ne. 7) stop 1
contains
  subroutine foo
    use omp_lib
    logical :: l
    l = .false.
!$omp parallel shared (a) private (b) firstprivate (c) &
!$omp num_threads (2) reduction (.or.:l)
    if (a .ne. 1 .or. c .ne. 3) l = .true.
!$omp barrier
    if (omp_get_thread_num () .eq. 0) then
      a = 4
      b = 5
      c = 6
    end if
!$omp barrier
    if (omp_get_thread_num () .eq. 1) then
      if (a .ne. 4 .or. c .ne. 3) l = .true.
      a = 7
      b = 8
      c = 9
    else if (omp_get_num_threads () .eq. 1) then
      a = 7
    end if
!$omp barrier
    if (omp_get_thread_num () .eq. 0) then
      if (a .ne. 7 .or. b .ne. 5 .or. c .ne. 6) l = .true.
    end if
!$omp barrier
    if (omp_get_thread_num () .eq. 1) then
      if (a .ne. 7 .or. b .ne. 8 .or. c .ne. 9) l = .true.
    end if
!$omp end parallel
    if (l) stop 2
  end subroutine foo
end
