0
|
1 ! { dg-do run }
|
|
2
|
|
3 use omp_lib
|
|
4 integer :: i, j, k
|
|
5 logical :: l
|
|
6 common /b/ i, j
|
|
7 i = 4
|
|
8 j = 8
|
|
9 l = .false.
|
|
10 !$omp parallel private (k) firstprivate (i) shared (j) num_threads (2) &
|
|
11 !$omp& reduction (.or.:l)
|
|
12 if (i .ne. 4 .or. j .ne. 8) l = .true.
|
|
13 !$omp barrier
|
|
14 k = omp_get_thread_num ()
|
|
15 if (k .eq. 0) then
|
|
16 i = 14
|
|
17 j = 15
|
|
18 end if
|
|
19 !$omp barrier
|
|
20 if (k .eq. 1) then
|
|
21 if (i .ne. 4 .or. j .ne. 15) l = .true.
|
|
22 i = 24
|
|
23 j = 25
|
|
24 end if
|
|
25 !$omp barrier
|
|
26 if (j .ne. 25 .or. i .ne. (k * 10 + 14)) l = .true.
|
|
27 !$omp end parallel
|
|
28 if (l .or. j .ne. 25) call abort
|
|
29 end
|