xref: /openbsd-src/gnu/gcc/libgomp/testsuite/libgomp.fortran/nestedfn2.f90 (revision 404b540a9034ac75a6199ad1a32d1bbc7a0d4210)
1*404b540aSrobert! { dg-do run }
2*404b540aSrobert
3*404b540aSrobert  integer :: i
4*404b540aSrobert  common /c/ i
5*404b540aSrobert  i = -1
6*404b540aSrobert!$omp parallel shared (i) num_threads (4)
7*404b540aSrobert  call test1
8*404b540aSrobert!$omp end parallel
9*404b540aSrobertend
10*404b540aSrobertsubroutine test1
11*404b540aSrobert  integer :: vari
12*404b540aSrobert  call test2
13*404b540aSrobert  call test3
14*404b540aSrobertcontains
15*404b540aSrobert  subroutine test2
16*404b540aSrobert    use omp_lib
17*404b540aSrobert    integer :: i
18*404b540aSrobert    common /c/ i
19*404b540aSrobert!$omp single
20*404b540aSrobert    i = omp_get_thread_num ()
21*404b540aSrobert    call test4
22*404b540aSrobert!$omp end single copyprivate (vari)
23*404b540aSrobert  end subroutine test2
24*404b540aSrobert  subroutine test3
25*404b540aSrobert    integer :: i
26*404b540aSrobert    common /c/ i
27*404b540aSrobert    if (i .lt. 0 .or. i .ge. 4) call abort
28*404b540aSrobert    if (i + 10 .ne. vari) call abort
29*404b540aSrobert  end subroutine test3
30*404b540aSrobert  subroutine test4
31*404b540aSrobert    use omp_lib
32*404b540aSrobert    vari = omp_get_thread_num () + 10
33*404b540aSrobert  end subroutine test4
34*404b540aSrobertend subroutine test1
35