d: Add language reference section to documentation files.
[official-gcc.git] / libgomp / testsuite / libgomp.fortran / task-detach-9.f90
blob540c6deaef3c95e816209c9c65110630c7553273
1 ! { dg-do run }
3 ! Test tasks with detach clause. Each thread spawns off a chain of tasks
4 ! in a taskgroup, that can then be executed by any available thread.
6 program task_detach_9
7 use omp_lib
9 integer (kind=omp_event_handle_kind) :: detach_event1, detach_event2
10 integer :: x = 0, y = 0, z = 0
11 integer :: thread_count
13 !$omp parallel private (detach_event1, detach_event2)
14 !$omp taskgroup
15 !$omp single
16 thread_count = omp_get_num_threads ()
17 !$omp end single
19 !$omp task detach (detach_event1) untied
20 !$omp atomic update
21 x = x + 1
22 !$omp end task
24 !$omp task detach (detach_event2) untied
25 !$omp atomic update
26 y = y + 1
27 call omp_fulfill_event (detach_event1);
28 !$omp end task
30 !$omp task untied
31 !$omp atomic update
32 z = z + 1
33 call omp_fulfill_event (detach_event2);
34 !$omp end task
35 !$omp end taskgroup
36 !$omp end parallel
38 if (x /= thread_count) stop 1
39 if (y /= thread_count) stop 2
40 if (z /= thread_count) stop 3
41 end program