! { dg-do compile } ! { dg-additional-options "-fdump-tree-original" } subroutine foo () !$omp parallel !$omp cancel parallel if (.true.) !$omp cancel parallel if (cancel: .true.) !$omp cancel parallel if (.false.) !$omp cancel parallel if (cancel: .false.) !$omp end parallel !$omp sections !$omp cancel sections if (cancel: .true.) stop !$omp end sections !$omp do do i = 1, 10 !$omp cancel do if (.false.) end do !$omp task !$omp cancel taskgroup if (cancel: .false.) !$omp end task !$omp task !$omp cancel taskgroup !$omp end task end subroutine ! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(1, 1\\);" 2 "original" } } ! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(1, 0\\);" 2 "original" } } ! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(4, 1\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(2, 0\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(8, 0\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel \\(8, 1\\);" 1 "original" } }