1! { dg-do run } 2!$ use omp_lib 3 4 integer (kind = 4) :: i, ia (6), j, ja (6), k, ka (6), ta (6), n, cnt, x 5 logical :: v 6 7 i = int(Z'ffff0f') 8 ia = int(Z'f0ff0f') 9 j = int(Z'0f0000') 10 ja = int(Z'0f5a00') 11 k = int(Z'055aa0') 12 ka = int(Z'05a5a5') 13 v = .false. 14 cnt = -1 15 x = not(0) 16 17!$omp parallel num_threads (3) private (n) reduction (.or.:v) & 18!$omp & reduction (iand:i, ia) reduction (ior:j, ja) reduction (ieor:k, ka) 19!$ if (i .ne. x .or. any (ia .ne. x)) v = .true. 20!$ if (j .ne. 0 .or. any (ja .ne. 0)) v = .true. 21!$ if (k .ne. 0 .or. any (ka .ne. 0)) v = .true. 22 n = omp_get_thread_num () 23 if (n .eq. 0) then 24 cnt = omp_get_num_threads () 25 i = int(Z'ff7fff') 26 ia(3:5) = int(Z'fffff1') 27 j = int(Z'078000') 28 ja(1:3) = 1 29 k = int(Z'78') 30 ka(3:6) = int(Z'f0f') 31 else if (n .eq. 1) then 32 i = int(Z'ffff77') 33 ia(2:5) = int(Z'ffafff') 34 j = int(Z'007800') 35 ja(2:5) = 8 36 k = int(Z'57') 37 ka(3:4) = int(Z'f0108') 38 else 39 i = int(Z'777fff') 40 ia(1:2) = int(Z'fffff3') 41 j = int(Z'000780') 42 ja(5:6) = int(Z'f00') 43 k = int(Z'1000') 44 ka(6:6) = int(Z'777') 45 end if 46!$omp end parallel 47 if (v) stop 1 48 if (cnt .eq. 3) then 49 ta = (/int(Z'f0ff03'), int(Z'f0af03'), int(Z'f0af01'), int(Z'f0af01'), int(Z'f0af01'), int(Z'f0ff0f')/) 50 if (i .ne. int(Z'777f07') .or. any (ia .ne. ta)) stop 2 51 ta = (/int(Z'f5a01'), int(Z'f5a09'), int(Z'f5a09'), int(Z'f5a08'), int(Z'f5f08'), int(Z'f5f00')/) 52 if (j .ne. int(Z'fff80') .or. any (ja .ne. ta)) stop 3 53 ta = (/int(Z'5a5a5'), int(Z'5a5a5'), int(Z'aaba2'), int(Z'aaba2'), int(Z'5aaaa'), int(Z'5addd')/) 54 if (k .ne. int(Z'54a8f') .or. any (ka .ne. ta)) stop 4 55 end if 56end 57