1! { dg-do compile }
2! { dg-additional-options "-fdump-tree-original" }
3
4subroutine foo ()
5  !$omp parallel
6    !$omp cancel parallel if (.true.)
7    !$omp cancel parallel if (cancel: .true.)
8    !$omp cancel parallel if (.false.)
9    !$omp cancel parallel if (cancel: .false.)
10  !$omp end parallel
11
12  !$omp sections
13    !$omp cancel sections if (cancel: .true.)
14    stop
15  !$omp end sections
16
17  !$omp do
18  do i = 1, 10
19    !$omp cancel do if (.false.)
20  end do
21
22  !$omp task
23    !$omp cancel taskgroup if (cancel: .false.)
24  !$omp end task
25  !$omp task
26    !$omp cancel taskgroup
27  !$omp end task
28end subroutine
29
30! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(1, 1\\);" 2 "original" } }
31! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(1, 0\\);" 2 "original" } }
32! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(4, 1\\);" 1 "original" } }
33! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(2, 0\\);" 1 "original" } }
34! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(8, 0\\);" 1 "original" } }
35! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(8, 1\\);" 1 "original" } }
36