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