1! { dg-do run }
2
3! Test handling of detach clause with only a single thread.  The runtime
4! should not block when a task with an unfulfilled event finishes
5! running.
6
7program task_detach_2
8  use omp_lib
9
10  integer (kind=omp_event_handle_kind) :: detach_event1, detach_event2
11  integer :: x = 0, y = 0, z = 0
12
13  !$omp parallel num_threads (1)
14    !$omp single
15      !$omp task detach (detach_event1)
16        x = x + 1
17      !$omp end task
18
19      !$omp task detach (detach_event2)
20        y = y + 1
21	call omp_fulfill_event (detach_event1)
22      !$omp end task
23
24      !$omp task
25        z = z + 1
26	call omp_fulfill_event (detach_event2)
27      !$omp end task
28    !$omp end single
29  !$omp end parallel
30
31  if (x /= 1) stop 1
32  if (y /= 1) stop 2
33  if (z /= 1) stop 3
34end program
35