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