1#include <omp.h>
2#include <stdlib.h>
3
4int
5main (void)
6{
7  int err = 0;
8
9  omp_set_num_threads (4);
10  if (omp_get_max_threads () != 4)
11    abort ();
12  #pragma omp parallel reduction(|: err) num_threads(1)
13  {
14    if (omp_get_max_threads () != 4)
15      err |= 1;
16    omp_set_num_threads (6);
17    #pragma omp task if(0) shared(err)
18    {
19      if (omp_get_max_threads () != 6)
20	err |= 2;
21      omp_set_num_threads (5);
22      if (omp_get_max_threads () != 5)
23	err |= 4;
24    }
25    if (omp_get_max_threads () != 6)
26      err |= 8;
27  }
28  if (err)
29    abort ();
30  if (omp_get_max_threads () != 4)
31    abort ();
32  return 0;
33}
34