Daily bump.
[official-gcc.git] / libgomp / testsuite / libgomp.c / pr61200.c
blobba3ed37e0405292867c8ecae4be394130a742d3c
1 /* PR libgomp/61200 */
2 /* { dg-do run } */
4 #include <omp.h>
5 #include <stdlib.h>
6 #include <unistd.h>
8 volatile int x;
10 void
11 foo ()
13 int var = 1;
14 int i;
16 for (i = 0; i < 2; i++)
18 if (i == 1)
20 #pragma omp parallel num_threads(2)
21 if (x)
22 var++;
23 else
25 #pragma omp single
26 sleep (2);
29 else
31 #pragma omp task shared(var)
33 sleep (1);
34 var = 2;
38 #pragma omp taskwait
39 if (var != 2)
40 abort ();
43 void
44 bar ()
46 int var = 1;
47 int i;
49 for (i = 0; i < 2; i++)
51 if (i == 0)
53 #pragma omp task shared(var)
55 sleep (1);
56 var = 2;
59 else
61 #pragma omp parallel num_threads(2)
62 if (x)
63 var++;
64 else
66 #pragma omp single
67 sleep (2);
71 #pragma omp taskwait
72 if (var != 2)
73 abort ();
76 int
77 main ()
79 omp_set_nested (1);
80 #pragma omp parallel num_threads(2)
81 #pragma omp single
82 foo ();
83 #pragma omp parallel num_threads(2)
84 #pragma omp single
85 bar ();
86 return 0;