Rebase.
[official-gcc.git] / libgomp / testsuite / libgomp.c / thread-limit-1.c
blob6cc716bee89f2e21b0344bb8bdfd47da090964b4
1 /* { dg-do run } */
2 /* { dg-set-target-env-var OMP_THREAD_LIMIT "6" } */
4 #include <stdlib.h>
5 #include <unistd.h>
7 int
8 main ()
10 if (omp_get_thread_limit () != 6)
11 return 0;
12 omp_set_dynamic (0);
13 omp_set_nested (1);
14 #pragma omp parallel num_threads (3)
15 if (omp_get_num_threads () != 3)
16 abort ();
17 #pragma omp parallel num_threads (3)
18 if (omp_get_num_threads () != 3)
19 abort ();
20 #pragma omp parallel num_threads (8)
21 if (omp_get_num_threads () > 6)
22 abort ();
23 #pragma omp parallel num_threads (6)
24 if (omp_get_num_threads () != 6)
25 abort ();
26 int cnt = 0;
27 #pragma omp parallel num_threads (5)
28 #pragma omp parallel num_threads (5)
29 #pragma omp parallel num_threads (2)
31 int v;
32 #pragma omp atomic capture
33 v = ++cnt;
34 if (v > 6)
35 abort ();
36 usleep (10000);
37 #pragma omp atomic
38 --cnt;
40 return 0;