1! { dg-do run } 2function foo () 3 integer :: foo 4 logical :: foo_seen 5 common /foo_seen/ foo_seen 6 foo_seen = .true. 7 foo = 3 8end 9function bar () 10 integer :: bar 11 logical :: bar_seen 12 common /bar_seen/ bar_seen 13 bar_seen = .true. 14 bar = 3 15end 16 integer :: a (10), b (10), foo, bar 17 logical :: foo_seen, bar_seen 18 common /foo_seen/ foo_seen 19 common /bar_seen/ bar_seen 20 21 foo_seen = .false. 22 bar_seen = .false. 23!$omp parallel workshare if (foo () .gt. 2) num_threads (bar () + 1) 24 a = 10 25 b = 20 26 a(1:5) = max (a(1:5), b(1:5)) 27!$omp end parallel workshare 28 if (any (a(1:5) .ne. 20)) stop 1 29 if (any (a(6:10) .ne. 10)) stop 2 30 if (.not. foo_seen .or. .not. bar_seen) stop 3 31end 32