gcc/libgomp/testsuite/libgomp.fortran/sharing2.f90

33 lines
631 B
Fortran

! { dg-do run }
use omp_lib
integer :: i, j, k, m, n
logical :: l
equivalence (i, m)
equivalence (j, n)
i = 4
j = 8
l = .false.
!$omp parallel private (k) firstprivate (i) shared (j) num_threads (2) &
!$omp& reduction (.or.:l)
l = l .or. i .ne. 4
l = l .or. j .ne. 8
!$omp barrier
k = omp_get_thread_num ()
if (k .eq. 0) then
i = 14
j = 15
end if
!$omp barrier
if (k .eq. 1) then
if (i .ne. 4 .or. j .ne. 15) l = .true.
i = 24
j = 25
end if
!$omp barrier
if (j .ne. 25 .or. i .ne. (k * 10 + 14)) l = .true.
!$omp end parallel
if (l) call abort
if (j .ne. 25) call abort
end