1#include <stdlib.h>
2
3int cnt;
4
5void
6check (int x)
7{
8  if (cnt++ != x)
9    abort ();
10}
11
12int
13main (void)
14{
15  int j;
16
17  cnt = 0;
18#pragma omp parallel for ordered schedule (static, 1) num_threads (4) if (0)
19  for (j = 0; j < 1000; j++)
20    {
21#pragma omp ordered
22      check (j);
23    }
24
25  cnt = 0;
26#pragma omp parallel for ordered schedule (static, 1) num_threads (4) if (1)
27  for (j = 0; j < 1000; j++)
28    {
29#pragma omp ordered
30      check (j);
31    }
32
33  cnt = 0;
34#pragma omp parallel for ordered schedule (runtime) num_threads (4) if (0)
35  for (j = 0; j < 1000; j++)
36    {
37#pragma omp ordered
38      check (j);
39    }
40
41  cnt = 0;
42#pragma omp parallel for ordered schedule (runtime) num_threads (4) if (1)
43  for (j = 0; j < 1000; j++)
44    {
45#pragma omp ordered
46      check (j);
47    }
48
49  cnt = 0;
50#pragma omp parallel for ordered schedule (dynamic) num_threads (4) if (0)
51  for (j = 0; j < 1000; j++)
52    {
53#pragma omp ordered
54      check (j);
55    }
56
57  cnt = 0;
58#pragma omp parallel for ordered schedule (dynamic) num_threads (4) if (1)
59  for (j = 0; j < 1000; j++)
60    {
61#pragma omp ordered
62      check (j);
63    }
64
65  cnt = 0;
66#pragma omp parallel for ordered schedule (guided) num_threads (4) if (0)
67  for (j = 0; j < 1000; j++)
68    {
69#pragma omp ordered
70      check (j);
71    }
72
73  cnt = 0;
74#pragma omp parallel for ordered schedule (guided) num_threads (4) if (1)
75  for (j = 0; j < 1000; j++)
76    {
77#pragma omp ordered
78      check (j);
79    }
80
81  return 0;
82}
83