| ! { dg-do run } | 
 | !$ use omp_lib | 
 |  | 
 |   character (len = 8) :: h | 
 |   character (len = 9) :: i | 
 |   h = '01234567' | 
 |   i = 'ABCDEFGHI' | 
 |   call test (h, i, 9) | 
 | contains | 
 |   subroutine test (p, q, n) | 
 |     character (len = *) :: p | 
 |     character (len = n) :: q | 
 |     character (len = n) :: r | 
 |     character (len = n) :: t | 
 |     character (len = n) :: u | 
 |     integer, dimension (n + 4) :: s | 
 |     logical :: l | 
 |     integer :: m | 
 |     r = '' | 
 |     if (n .gt. 8) r = 'jklmnopqr' | 
 |     do m = 1, n + 4 | 
 |       s(m) = m | 
 |     end do | 
 |     u = 'abc' | 
 |     l = .false. | 
 | !$omp parallel firstprivate (p, q, r) private (t, m) reduction (.or.:l) & | 
 | !$omp & num_threads (2) | 
 |     do m = 1, 13 | 
 |       if (s(m) .ne. m) l = .true. | 
 |     end do | 
 |     m = omp_get_thread_num () | 
 |     l = l .or. p .ne. '01234567' .or. q .ne. 'ABCDEFGHI' | 
 |     l = l .or. r .ne. 'jklmnopqr' .or. u .ne. 'abc' | 
 | !$omp barrier | 
 |     if (m .eq. 0) then | 
 |       p = 'A' | 
 |       q = 'B' | 
 |       r = 'C' | 
 |       t = '123' | 
 |       u = '987654321' | 
 |     else if (m .eq. 1) then | 
 |       p = 'D' | 
 |       q = 'E' | 
 |       r = 'F' | 
 |       t = '456' | 
 |       s = m | 
 |     end if | 
 | !$omp barrier | 
 |     l = l .or. u .ne. '987654321' | 
 |     if (any (s .ne. 1)) l = .true. | 
 |     if (m .eq. 0) then | 
 |       l = l .or. p .ne. 'A' .or. q .ne. 'B' .or. r .ne. 'C' | 
 |       l = l .or. t .ne. '123' | 
 |     else | 
 |       l = l .or. p .ne. 'D' .or. q .ne. 'E' .or. r .ne. 'F' | 
 |       l = l .or. t .ne. '456' | 
 |     end if | 
 | !$omp end parallel | 
 |     if (l) stop 1 | 
 |   end subroutine test | 
 | end |