1#include <omp.h>
2
3extern "C" void abort (void);
4
5int
6foo (void)
7{
8  return 10;
9}
10
11main ()
12{
13  int A = 0;
14
15  #pragma omp parallel if (foo () > 10) shared (A)
16    {
17      A = omp_get_num_threads ();
18    }
19
20  if (A != 1)
21    abort ();
22
23  #pragma omp parallel if (foo () == 10) num_threads (3) shared (A)
24    {
25      A = omp_get_num_threads ();
26    }
27
28  if (A != 3)
29    abort ();
30
31  #pragma omp parallel if (foo () == 10) num_threads (foo ()) shared (A)
32    {
33      A = omp_get_num_threads ();
34    }
35
36  if (A != 10)
37    abort ();
38
39  return 0;
40}
41