| ! { dg-do run } |
| |
| ! Test handling of detach clause with only a single thread. The runtime |
| ! should not block when a task with an unfulfilled event finishes |
| ! running. |
| |
| program task_detach_2 |
| use omp_lib |
| |
| integer (kind=omp_event_handle_kind) :: detach_event1, detach_event2 |
| integer :: x = 0, y = 0, z = 0 |
| |
| !$omp parallel num_threads (1) |
| !$omp single |
| !$omp task detach (detach_event1) |
| x = x + 1 |
| !$omp end task |
| |
| !$omp task detach (detach_event2) |
| y = y + 1 |
| call omp_fulfill_event (detach_event1) |
| !$omp end task |
| |
| !$omp task |
| z = z + 1 |
| call omp_fulfill_event (detach_event2) |
| !$omp end task |
| !$omp end single |
| !$omp end parallel |
| |
| if (x /= 1) stop 1 |
| if (y /= 1) stop 2 |
| if (z /= 1) stop 3 |
| end program |