1! { dg-additional-options "-fdump-tree-original" }
2subroutine foo (p)
3  logical :: p(:)
4  integer i
5  integer a, b, c, d, e, f, g, h
6  a = -1; b = -1; c = -1; d = -1; e = -1; f = -1; g = -1; h = -1
7  !$omp parallel
8  !$omp do lastprivate (conditional: a)
9  do i = 1, 32
10    if (p(i)) &
11      a = i
12  end do
13  !$omp end parallel
14  !$omp simd lastprivate (conditional: b)
15  do i = 1, 32
16    if (p(i)) &
17      b = i
18  end do
19  !$omp parallel
20  !$omp do simd lastprivate (conditional: c)
21  do i = 1, 32
22    if (p(i)) &
23      c = i
24  end do
25  !$omp end parallel
26  !$omp parallel do lastprivate (conditional: d)
27  do i = 1, 32
28    if (p(i)) &
29      d = i
30  end do
31  !$omp end parallel do
32  !$omp parallel do simd lastprivate (conditional: e)
33  do i = 1, 32
34    if (p(i)) &
35      e = i
36  end do
37  !$omp end parallel do simd
38end subroutine
39
40! { dg-final { scan-tree-dump-times "#pragma omp for lastprivate\\(conditional:a\\)" 1 "original" } }
41! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\) lastprivate\\(conditional:b\\)" 1 "original" } }
42! { dg-final { scan-tree-dump-times "#pragma omp for lastprivate\\(conditional:c\\)" 1 "original" } }
43! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\) lastprivate\\(conditional:c\\)" 1 "original" } }
44! { dg-final { scan-tree-dump-times "#pragma omp parallel lastprivate\\(conditional:d\\)" 1 "original" } }
45! { dg-final { scan-tree-dump-times "#pragma omp parallel lastprivate\\(conditional:e\\)" 1 "original" } }
46! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\) lastprivate\\(conditional:e\\)" 1 "original" } }
47