Mercurial > hg > CbC > CbC_gcc
view libgomp/testsuite/libgomp.fortran/reduction2.f90 @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
line wrap: on
line source
! { dg-do run } !$ use omp_lib logical :: l, la (4), m, ma (4), v integer :: n, cnt l = .true. la = (/.true., .false., .true., .true./) m = .false. ma = (/.false., .false., .false., .true./) v = .false. cnt = -1 !$omp parallel num_threads (3) private (n) reduction (.or.:v) & !$omp & reduction (.and.:l, la) reduction (.or.:m, ma) !$ if (.not. l .or. any (.not. la)) v = .true. !$ if (m .or. any (ma)) v = .true. n = omp_get_thread_num () if (n .eq. 0) then cnt = omp_get_num_threads () l = .false. la(3) = .false. ma(2) = .true. else if (n .eq. 1) then l = .false. la(4) = .false. ma(1) = .true. else la(3) = .false. m = .true. ma(1) = .true. end if !$omp end parallel if (v) stop 1 if (cnt .eq. 3) then if (l .or. any (la .neqv. (/.true., .false., .false., .false./))) stop 2 if (.not. m .or. any (ma .neqv. (/.true., .true., .false., .true./))) stop 3 end if l = .true. la = (/.true., .false., .true., .true./) m = .false. ma = (/.false., .false., .false., .true./) v = .false. cnt = -1 !$omp parallel num_threads (3) private (n) reduction (.or.:v) & !$omp & reduction (.eqv.:l, la) reduction (.neqv.:m, ma) !$ if (.not. l .or. any (.not. la)) v = .true. !$ if (m .or. any (ma)) v = .true. n = omp_get_thread_num () if (n .eq. 0) then cnt = omp_get_num_threads () l = .false. la(3) = .false. ma(2) = .true. else if (n .eq. 1) then l = .false. la(4) = .false. ma(1) = .true. else la(3) = .false. m = .true. ma(1) = .true. end if !$omp end parallel if (v) stop 4 if (cnt .eq. 3) then if (.not. l .or. any (la .neqv. (/.true., .false., .true., .false./))) stop 5 if (.not. m .or. any (ma .neqv. (/.false., .true., .false., .true./))) stop 6 end if end