xref: /openbsd-src/gnu/gcc/libgomp/testsuite/libgomp.c/omp-parallel-if.c (revision 404b540a9034ac75a6199ad1a32d1bbc7a0d4210)
1*404b540aSrobert #include <omp.h>
2*404b540aSrobert 
3*404b540aSrobert extern void abort (void);
4*404b540aSrobert 
5*404b540aSrobert int
foo(void)6*404b540aSrobert foo (void)
7*404b540aSrobert {
8*404b540aSrobert   return 10;
9*404b540aSrobert }
10*404b540aSrobert 
main()11*404b540aSrobert main ()
12*404b540aSrobert {
13*404b540aSrobert   int A = 0;
14*404b540aSrobert 
15*404b540aSrobert   #pragma omp parallel if (foo () > 10) shared (A)
16*404b540aSrobert     {
17*404b540aSrobert       A = omp_get_num_threads ();
18*404b540aSrobert     }
19*404b540aSrobert 
20*404b540aSrobert   if (A != 1)
21*404b540aSrobert     abort ();
22*404b540aSrobert 
23*404b540aSrobert   #pragma omp parallel if (foo () == 10) num_threads (3) shared (A)
24*404b540aSrobert     {
25*404b540aSrobert       A = omp_get_num_threads ();
26*404b540aSrobert     }
27*404b540aSrobert 
28*404b540aSrobert   if (A != 3)
29*404b540aSrobert     abort ();
30*404b540aSrobert 
31*404b540aSrobert   #pragma omp parallel if (foo () == 10) num_threads (foo ()) shared (A)
32*404b540aSrobert     {
33*404b540aSrobert       A = omp_get_num_threads ();
34*404b540aSrobert     }
35*404b540aSrobert 
36*404b540aSrobert   if (A != 10)
37*404b540aSrobert     abort ();
38*404b540aSrobert 
39*404b540aSrobert   return 0;
40*404b540aSrobert }
41