Skip gnat.dg/prot7.adb on hppa.
[official-gcc.git] / libgomp / testsuite / libgomp.c / thread-limit-2.c
blob7997a70adc356ae0a50381ca92885f899f71147d
1 /* { dg-do run } */
2 /* { dg-set-target-env-var OMP_THREAD_LIMIT "9" } */
3 /* { dg-additional-options "-Wno-deprecated-declarations" } */
5 #include <stdlib.h>
6 #include <unistd.h>
7 #include <omp.h>
8 #include "usleep.h"
10 int
11 main ()
13 if (omp_get_thread_limit () != 9)
14 return 0;
15 omp_set_dynamic (0);
16 #pragma omp parallel num_threads (8)
17 if (omp_get_num_threads () != 8)
18 abort ();
19 #pragma omp parallel num_threads (16)
20 if (omp_get_num_threads () > 9)
21 abort ();
22 #pragma omp target if (0)
24 omp_set_dynamic (0);
25 omp_set_nested (1);
26 #pragma omp teams thread_limit (6)
28 #pragma omp parallel num_threads (3)
29 if (omp_get_thread_limit () > 6
30 || (omp_get_thread_limit () == 6 && omp_get_num_threads () != 3))
31 abort ();
32 #pragma omp parallel num_threads (3)
33 if (omp_get_thread_limit () > 6
34 || (omp_get_thread_limit () == 6 && omp_get_num_threads () != 3))
35 abort ();
36 #pragma omp parallel num_threads (8)
37 if (omp_get_thread_limit () > 6
38 || (omp_get_thread_limit () == 6 && omp_get_num_threads () > 6))
39 abort ();
40 #pragma omp parallel num_threads (6)
41 if (omp_get_thread_limit () > 6
42 || (omp_get_thread_limit () == 6 && omp_get_num_threads () != 6))
43 abort ();
44 int cnt = 0;
45 #pragma omp parallel num_threads (5)
46 #pragma omp parallel num_threads (5)
47 #pragma omp parallel num_threads (2)
49 int v;
50 #pragma omp atomic capture
51 v = ++cnt;
52 if (v > 6)
53 abort ();
54 tgt_usleep (10000);
55 #pragma omp atomic
56 --cnt;
60 return 0;