Merge from mainline
[official-gcc.git] / libgomp / testsuite / libgomp.fortran / reference1.f90
blobb959e2716b89f42b6f69511f3551f4b6b6c1ab29
1 ! { dg-do run }
2 !$ use omp_lib
4 integer :: i, j, k
5 double precision :: d
6 i = 6
7 j = 19
8 k = 0
9 d = 24.5
10 call test (i, j, k, d)
11 if (i .ne. 38) call abort
12 if (iand (k, 255) .ne. 0) call abort
13 if (iand (k, 65280) .eq. 0) then
14 if (k .ne. 65536 * 4) call abort
15 end if
16 contains
17 subroutine test (i, j, k, d)
18 integer :: i, j, k
19 double precision :: d
21 !$omp parallel firstprivate (d) private (j) num_threads (4) reduction (+:k)
22 if (i .ne. 6 .or. d .ne. 24.5 .or. k .ne. 0) k = k + 1
23 if (omp_get_num_threads () .ne. 4) k = k + 256
24 d = d / 2
25 j = 8
26 k = k + 65536
27 !$omp barrier
28 if (d .ne. 12.25 .or. j .ne. 8) k = k + 1
29 !$omp single
30 i = i + 32
31 !$omp end single nowait
32 !$omp end parallel
33 end subroutine test
34 end