! { dg-do run } !$ use omp_lib character (len = 8) :: h, i character (len = 4) :: j, k h = '01234567' i = 'ABCDEFGH' j = 'IJKL' k = 'MN' call test (h, j) contains subroutine test (p, q) character (len = 8) :: p character (len = 4) :: q, r character (len = 16) :: f character (len = 32) :: g integer, dimension (18) :: s logical :: l integer :: m f = 'test16' g = 'abcdefghijklmnopqrstuvwxyz' r = '' l = .false. s = -6 !$omp parallel firstprivate (f, p, s) private (r, m) reduction (.or.:l) & !$omp & num_threads (4) m = omp_get_thread_num () if (any (s .ne. -6)) l = .true. l = l .or. f .ne. 'test16' .or. p .ne. '01234567' l = l .or. g .ne. 'abcdefghijklmnopqrstuvwxyz' l = l .or. i .ne. 'ABCDEFGH' .or. q .ne. 'IJKL' l = l .or. k .ne. 'MN' !$omp barrier if (m .eq. 0) then f = 'ffffffff0' g = 'xyz' i = '123' k = '9876' p = '_abc' q = '_def' r = '1_23' else if (m .eq. 1) then f = '__' p = 'xxx' r = '7575' else if (m .eq. 2) then f = 'ZZ' p = 'm2' r = 'M2' else if (m .eq. 3) then f = 'YY' p = 'm3' r = 'M3' end if s = m !$omp barrier l = l .or. g .ne. 'xyz' .or. i .ne. '123' .or. k .ne. '9876' l = l .or. q .ne. '_def' if (any (s .ne. m)) l = .true. if (m .eq. 0) then l = l .or. f .ne. 'ffffffff0' .or. p .ne. '_abc' .or. r .ne. '1_23' else if (m .eq. 1) then l = l .or. f .ne. '__' .or. p .ne. 'xxx' .or. r .ne. '7575' else if (m .eq. 2) then l = l .or. f .ne. 'ZZ' .or. p .ne. 'm2' .or. r .ne. 'M2' else if (m .eq. 3) then l = l .or. f .ne. 'YY' .or. p .ne. 'm3' .or. r .ne. 'M3' end if !$omp end parallel if (l) call abort end subroutine test end