OSDN Git Service

gcc/testsuite/
[pf3gnuchains/gcc-fork.git] / libgomp / testsuite / libgomp.c / task-2.c
1 extern void abort (void);
2
3 int
4 f1 (void)
5 {
6   int a = 6, e = 0;
7   int nested (int x)
8   {
9     return x + a;
10   }
11   #pragma omp task
12   {
13     int n = nested (5);
14     if (n != 11)
15       #pragma omp atomic
16         e += 1;
17   }
18   #pragma omp taskwait
19   return e;
20 }
21
22 int
23 f2 (void)
24 {
25   int a = 6, e = 0;
26   int nested (int x)
27   {
28     return x + a;
29   }
30   a = nested (4);
31   #pragma omp task
32   {
33     if (a != 10)
34       #pragma omp atomic
35         e += 1;
36   }
37   #pragma omp taskwait
38   return e;
39 }
40
41 int
42 main (void)
43 {
44   int e = 0;
45   #pragma omp parallel num_threads(4) reduction(+:e)
46   {
47     e += f1 ();
48     e += f2 ();
49   }
50   if (e)
51     abort ();
52   return 0;
53 }