Imported Upstream version 4.8.1
[platform/upstream/gcc48.git] / libgomp / testsuite / libgomp.c / lock-1.c
1 #include <omp.h>
2 #include <stdlib.h>
3
4 int
5 main (void)
6 {
7   int l = 0;
8   omp_nest_lock_t lock;
9   omp_init_nest_lock (&lock);
10   if (omp_test_nest_lock (&lock) != 1)
11     abort ();
12   if (omp_test_nest_lock (&lock) != 2)
13     abort ();
14 #pragma omp parallel if (0) reduction (+:l)
15   {
16     /* In OpenMP 2.5 this was supposed to return 3,
17        but in OpenMP 3.0 the parallel region has a different
18        task and omp_*_lock_t are owned by tasks, not by threads.  */
19     if (omp_test_nest_lock (&lock) != 0)
20       l++;
21   }
22   if (l)
23     abort ();
24   if (omp_test_nest_lock (&lock) != 3)
25     abort ();
26   omp_unset_nest_lock (&lock);
27   omp_unset_nest_lock (&lock);
28   omp_unset_nest_lock (&lock);
29   omp_destroy_nest_lock (&lock);
30   return 0;
31 }