! { dg-do run } program main use omp_lib implicit none integer :: i if (omp_in_explicit_task ()) & error stop !$omp task if (.not. omp_in_explicit_task ()) & error stop !$omp end task !$omp task final (.true.) if (.not. omp_in_explicit_task ()) & error stop !$omp task if (.not. omp_in_explicit_task ()) & error stop !$omp end task !$omp end task !$omp parallel if (omp_in_explicit_task ()) & error stop !$omp task if (.false.) if (.not. omp_in_explicit_task ()) & error stop !$omp task if (.false.) if (.not. omp_in_explicit_task ()) & error stop !$omp end task !$omp end task !$omp task final (.true.) if (.not. omp_in_explicit_task ()) & error stop !$omp end task !$omp barrier if (omp_in_explicit_task ()) & error stop !$omp taskloop num_tasks (24) do i = 1, 32 if (.not. omp_in_explicit_task ()) & error stop end do !$omp masked !$omp task if (.not. omp_in_explicit_task ()) & error stop !$omp end task !$omp end masked !$omp barrier if (omp_in_explicit_task ()) & error stop !$omp end parallel !$omp target if (omp_in_explicit_task ()) & error stop !$omp task if (.false.) if (.not. omp_in_explicit_task ()) & error stop !$omp end task !$omp task if (.not. omp_in_explicit_task ()) & error stop !$omp end task !$omp end target !$omp target teams !$omp distribute do i = 1, 4 if (omp_in_explicit_task ()) then error stop else !$omp parallel if (omp_in_explicit_task ()) & error stop !$omp task if (.not. omp_in_explicit_task ()) & error stop !$omp end task !$omp barrier if (omp_in_explicit_task ()) & error stop !$omp end parallel end if end do !$omp end target teams !$omp teams !$omp distribute do i = 1, 4 if (omp_in_explicit_task ()) then error stop else !$omp parallel if (omp_in_explicit_task ()) & error stop !$omp task if (.not. omp_in_explicit_task ()) & error stop !$omp end task !$omp barrier if (omp_in_explicit_task ()) & error stop !$omp end parallel end if end do !$omp end distribute !$omp end teams end