1subroutine foo (a, f)
2  implicit none (type, external)
3  interface
4    subroutine bar (x)
5      integer :: x
6    end subroutine
7  end interface
8
9  integer, value :: f
10  integer, contiguous :: a(0:)
11  integer :: i, j, k, u, v, w, x, y, z
12
13  !$omp parallel masked default(none) private (k) filter (f) firstprivate (f)
14    call bar (k)
15  !$omp end parallel masked
16
17  !$omp parallel masked default(none) private (k)
18    call bar (k)
19  !$omp end parallel masked
20
21  !$omp parallel default(none) firstprivate(a, f) shared(x, y, z)
22    !$omp masked taskloop reduction (+:x) default(none) firstprivate(a) filter (f)
23      do i = 0, 63
24        x = x + a(i)
25      end do
26    !$omp end masked taskloop
27    !$omp masked taskloop simd reduction (+:y) default(none) firstprivate(a) private (i) filter (f)
28      do i = 0, 63
29        y = y + a(i)
30      end do
31    !$omp end masked taskloop simd
32    !$omp masked taskloop simd reduction (+:y) default(none) firstprivate(a) private (i)
33      do i = 0, 63
34        y = y + a(i)
35      end do
36    !$omp end masked taskloop simd
37    !$omp masked taskloop simd collapse(2) reduction (+:z) default(none) firstprivate(a) private (i, j) filter (f)
38      do j = 0, 0
39        do i = 0, 63
40          z = z + a(i)
41        end do
42      end do
43    !$omp end masked taskloop simd
44  !$omp end parallel
45
46  !$omp parallel masked taskloop reduction (+:u) default(none) firstprivate(a, f) filter (f)
47    do i = 0, 63
48      u = u + a(i)
49    end do
50  !$omp end parallel masked taskloop
51
52  !$omp parallel masked taskloop simd reduction (+:v) default(none) firstprivate(a, f) filter (f)
53    do i = 0, 63
54      v = v + a(i)
55    end do
56  !$omp end parallel masked taskloop simd
57
58  !$omp parallel masked taskloop simd collapse(2) reduction (+:w) default(none) firstprivate(a, f) filter (f)
59    do j = 0, 0
60      do i = 0, 63
61        w = w + a(i)
62      end do
63    end do
64  !$omp end parallel masked taskloop simd
65end
66