PR c/81417
[official-gcc.git] / libgomp / testsuite / libgomp.fortran / taskloop1.f90
blob92f414c4d50d40fdec8a46188f1cbd75703385df
1 common /blk/ q, e
2 integer :: q, r
3 logical :: e
4 !$omp parallel
5 !$omp single
6 call foo (2, 7)
7 r = bar (12, 18)
8 !$omp end single
9 !$omp end parallel
10 if (q .ne. 6 .or. r .ne. 17 .or. e) call abort
11 contains
12 subroutine foo (a, b)
13 integer, intent (in) :: a, b
14 common /blk/ q, e
15 integer :: q, r, d
16 logical :: e
17 !$omp taskloop lastprivate (q) nogroup
18 do d = a, b, 2
19 q = d
20 if (d < 2 .or. d > 6 .or. iand (d, 1) .ne. 0) then
21 !$omp atomic write
22 e = .true.
23 end if
24 end do
25 end subroutine foo
26 function bar (a, b)
27 integer, intent (in) :: a, b
28 integer :: bar
29 common /blk/ q, e
30 integer :: q, r, d, s
31 logical :: e
32 s = 7
33 !$omp taskloop lastprivate (s)
34 do d = a, b - 1
35 if (d < 12 .or. d > 17) then
36 !$omp atomic write
37 e = .true.
38 end if
39 s = d
40 end do
41 !$omp end taskloop
42 bar = s
43 end function bar
44 end