1! { dg-additional-options "-fdump-tree-original" }
2!
3! PR fortran/97061
4
5integer function f3 (a1, b1, u)
6  implicit none
7  integer :: a1, b1, d1
8  integer u(0:1023)
9  !$omp teams distribute parallel do simd default(none) firstprivate (a1, b1) shared(u) lastprivate(d1)
10  do d1 = a1, b1-1
11      u(d1) = 5
12  end do
13end
14
15subroutine foo(n, m, u)
16  implicit none
17  integer :: hh, ii, jj, n, m
18  integer u(0:1023)
19  !$omp simd private(ii)
20  do ii = n, m
21    u(ii) = 5
22  end do
23  !$omp simd linear(jj:1)
24  do jj = 2, m+n
25    u(jj) = 6
26  end do
27  !$omp simd
28  do hh = 2, m+n
29    u(hh) = 6
30  end do
31end
32
33subroutine bar(n, m, u)
34  implicit none
35  integer :: kkk, lll, ooo, ppp, n, m
36  integer u(:,:)
37  !$omp simd lastprivate(kkk) lastprivate(lll) collapse(2)
38  do kkk = n, m
39    do lll = n, m
40      u(kkk, lll) = 5
41    end do
42  end do
43  !$omp simd private(kkk) private(lll) collapse(2)
44  do ooo = n, m
45    do ppp = n, m
46      u(ooo, ppp) = 5
47    end do
48  end do
49end
50
51
52! { dg-final { scan-tree-dump-times "#pragma omp teams firstprivate\\(a1\\) firstprivate\\(b1\\) shared\\(u\\) shared\\(d1\\) default\\(none\\)" 1 "original" } }
53! { dg-final { scan-tree-dump-times "#pragma omp distribute lastprivate\\(d1\\)" 1 "original" } }
54! { dg-final { scan-tree-dump-times "#pragma omp parallel firstprivate\\(a1\\) firstprivate\\(b1\\) lastprivate\\(d1\\) shared\\(u\\) default\\(none\\)" 1 "original" } }
55! { dg-final { scan-tree-dump-times "#pragma omp for nowait" 1 "original" } }
56! { dg-final { scan-tree-dump-times "#pragma omp simd lastprivate\\(d1\\)" 1 "original" } }
57
58! { dg-final { scan-tree-dump-times "#pragma omp simd private\\(ii\\)" 1 "original" } }
59! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(jj:1\\)" 1 "original" } }
60! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(hh:1\\)" 1 "original" } }
61! { dg-final { scan-tree-dump-times "#pragma omp simd lastprivate\\(kkk\\) lastprivate\\(lll\\) collapse\\(2\\)" 1 "original" } }
62! { dg-final { scan-tree-dump-times "#pragma omp simd private\\(kkk\\) private\\(lll\\) collapse\\(2\\)" 1 "original" } }
63