Retro68/gcc/libgomp/testsuite/libgomp.fortran/nestedfn1.f90
2018-12-28 16:30:48 +01:00

44 lines
942 B
Fortran

! { dg-do run }
integer :: a, b, c
a = 1
b = 2
c = 3
call foo
if (a .ne. 7) STOP 1
contains
subroutine foo
use omp_lib
logical :: l
l = .false.
!$omp parallel shared (a) private (b) firstprivate (c) &
!$omp num_threads (2) reduction (.or.:l)
if (a .ne. 1 .or. c .ne. 3) l = .true.
!$omp barrier
if (omp_get_thread_num () .eq. 0) then
a = 4
b = 5
c = 6
end if
!$omp barrier
if (omp_get_thread_num () .eq. 1) then
if (a .ne. 4 .or. c .ne. 3) l = .true.
a = 7
b = 8
c = 9
else if (omp_get_num_threads () .eq. 1) then
a = 7
end if
!$omp barrier
if (omp_get_thread_num () .eq. 0) then
if (a .ne. 7 .or. b .ne. 5 .or. c .ne. 6) l = .true.
end if
!$omp barrier
if (omp_get_thread_num () .eq. 1) then
if (a .ne. 7 .or. b .ne. 8 .or. c .ne. 9) l = .true.
end if
!$omp end parallel
if (l) STOP 2
end subroutine foo
end