1 #include <omp.h>
2 #include <stdlib.h>
3 
4 int
main()5 main ()
6 {
7   int d_o = omp_get_dynamic ();
8   int n_o = omp_get_nested ();
9   omp_sched_t s_o;
10   int c_o;
11   omp_get_schedule (&s_o, &c_o);
12   int m_o = omp_get_max_threads ();
13   omp_set_dynamic (1);
14   omp_set_nested (1);
15   omp_set_schedule (omp_sched_static, 2);
16   omp_set_num_threads (4);
17   int d = omp_get_dynamic ();
18   int n = omp_get_nested ();
19   omp_sched_t s;
20   int c;
21   omp_get_schedule (&s, &c);
22   int m = omp_get_max_threads ();
23   if (!omp_is_initial_device ())
24     abort ();
25   #pragma omp target if (0)
26   {
27     omp_sched_t s_c;
28     int c_c;
29     omp_get_schedule (&s_c, &c_c);
30     if (d_o != omp_get_dynamic ()
31 	|| n_o != omp_get_nested ()
32 	|| s_o != s_c
33 	|| c_o != c_c
34 	|| m_o != omp_get_max_threads ())
35       abort ();
36     omp_set_dynamic (0);
37     omp_set_nested (0);
38     omp_set_schedule (omp_sched_dynamic, 4);
39     omp_set_num_threads (2);
40     if (!omp_is_initial_device ())
41       abort ();
42   }
43   if (!omp_is_initial_device ())
44     abort ();
45   omp_sched_t s_c;
46   int c_c;
47   omp_get_schedule (&s_c, &c_c);
48   if (d != omp_get_dynamic ()
49       || n != omp_get_nested ()
50       || s != s_c
51       || c != c_c
52       || m != omp_get_max_threads ())
53     abort ();
54   #pragma omp target if (0)
55   #pragma omp teams
56   {
57     omp_sched_t s_c;
58     int c_c;
59     omp_get_schedule (&s_c, &c_c);
60     if (d_o != omp_get_dynamic ()
61 	|| n_o != omp_get_nested ()
62 	|| s_o != s_c
63 	|| c_o != c_c
64 	|| m_o != omp_get_max_threads ())
65       abort ();
66     omp_set_dynamic (0);
67     omp_set_nested (0);
68     omp_set_schedule (omp_sched_dynamic, 4);
69     omp_set_num_threads (2);
70     if (!omp_is_initial_device ())
71       abort ();
72   }
73   if (!omp_is_initial_device ())
74     abort ();
75   omp_get_schedule (&s_c, &c_c);
76   if (d != omp_get_dynamic ()
77       || n != omp_get_nested ()
78       || s != s_c
79       || c != c_c
80       || m != omp_get_max_threads ())
81     abort ();
82   return 0;
83 }
84