annotate libgomp/testsuite/libgomp.c/cancel-parallel-3.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do run } */
kono
parents:
diff changeset
2 /* { dg-set-target-env-var OMP_CANCELLATION "true" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 #include <omp.h>
kono
parents:
diff changeset
5 #include <unistd.h>
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 static inline void
kono
parents:
diff changeset
8 do_some_work (void)
kono
parents:
diff changeset
9 {
kono
parents:
diff changeset
10 asm volatile ("" : : : "memory");
kono
parents:
diff changeset
11 }
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 int
kono
parents:
diff changeset
14 main ()
kono
parents:
diff changeset
15 {
kono
parents:
diff changeset
16 omp_set_dynamic (0);
kono
parents:
diff changeset
17 omp_set_schedule (omp_sched_static, 1);
kono
parents:
diff changeset
18 #pragma omp parallel num_threads (16)
kono
parents:
diff changeset
19 {
kono
parents:
diff changeset
20 int i, j;
kono
parents:
diff changeset
21 do_some_work ();
kono
parents:
diff changeset
22 #pragma omp barrier
kono
parents:
diff changeset
23 if (omp_get_thread_num () == 1)
kono
parents:
diff changeset
24 {
kono
parents:
diff changeset
25 sleep (2);
kono
parents:
diff changeset
26 #pragma omp cancellation point parallel
kono
parents:
diff changeset
27 }
kono
parents:
diff changeset
28 for (j = 3; j <= 16; j++)
kono
parents:
diff changeset
29 #pragma omp for schedule (runtime) nowait
kono
parents:
diff changeset
30 for (i = 0; i < j; i++)
kono
parents:
diff changeset
31 do_some_work ();
kono
parents:
diff changeset
32 if (omp_get_thread_num () == 0)
kono
parents:
diff changeset
33 {
kono
parents:
diff changeset
34 sleep (1);
kono
parents:
diff changeset
35 #pragma omp cancel parallel
kono
parents:
diff changeset
36 }
kono
parents:
diff changeset
37 }
kono
parents:
diff changeset
38 return 0;
kono
parents:
diff changeset
39 }