aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/gomp/scope-2.f90
blob: a097ced86ec656f8a0124538be7b576246ff03b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
module m
  implicit none (type, external)
  integer :: r, r2, r3 = 1
  interface
    logical function bar(); end
  end interface
contains

subroutine foo
  integer :: i, j, k
  i = 0; j = 0; k = 0
  !$omp parallel
    if (bar ()) then
        !$omp cancel parallel
    end if
    !$omp scope reduction (+:r) private (i)
      !$omp scope reduction (+:r2) private (j)
        !$omp single
          i = 1;
          j = 2;
          r = r + 1
          r2 = r2 + 1
        !$omp end single nowait
      !$omp end scope
    !$omp end scope
  !$omp end parallel

  !$omp parallel
    if (bar ()) then
        !$omp cancel parallel
    end if
    !$omp scope reduction (task, +:r) private (i)
    !$omp scope reduction (task, *:r3)
      r = r + 1
      r3 = r3 + 1
    !$omp end scope
    !$omp end scope
  !$omp end parallel
end
end module