! { dg-do run }

! Test tasks with detach clause.  Each thread spawns off a chain of tasks,
! that can then be executed by any available thread.  Each thread uses
! taskwait to wait for the child tasks to complete.

program task_detach_7
  use omp_lib

  integer (kind=omp_event_handle_kind) :: detach_event1, detach_event2
  integer :: x = 0, y = 0, z = 0
  integer :: thread_count

  !$omp parallel private (detach_event1, detach_event2)
    !$omp single
      thread_count = omp_get_num_threads()
    !$omp end single

    !$omp task detach (detach_event1) untied
      !$omp atomic update
	x = x + 1
    !$omp end task

    !$omp task detach (detach_event2) untied
      !$omp atomic update
	y = y + 1
      call omp_fulfill_event (detach_event1)
    !$omp end task

    !$omp task untied
      !$omp atomic update
	z = z + 1
      call omp_fulfill_event (detach_event2)
    !$omp end task

    !$omp taskwait
  !$omp end parallel

  if (x /= thread_count) stop 1
  if (y /= thread_count) stop 2
  if (z /= thread_count) stop 3
end program
