--- /dev/null
+#include <stdlib.h>
+
+int cnt;
+
+void
+check (int x)
+{
+ if (cnt++ != x)
+ abort ();
+}
+
+int
+main (void)
+{
+ int j;
+
+ cnt = 0;
+#pragma omp parallel for ordered schedule (static, 1) num_threads (4) if (0)
+ for (j = 0; j < 1000; j++)
+ {
+#pragma omp ordered
+ check (j);
+ }
+
+ cnt = 0;
+#pragma omp parallel for ordered schedule (static, 1) num_threads (4) if (1)
+ for (j = 0; j < 1000; j++)
+ {
+#pragma omp ordered
+ check (j);
+ }
+
+ cnt = 0;
+#pragma omp parallel for ordered schedule (runtime) num_threads (4) if (0)
+ for (j = 0; j < 1000; j++)
+ {
+#pragma omp ordered
+ check (j);
+ }
+
+ cnt = 0;
+#pragma omp parallel for ordered schedule (runtime) num_threads (4) if (1)
+ for (j = 0; j < 1000; j++)
+ {
+#pragma omp ordered
+ check (j);
+ }
+
+ cnt = 0;
+#pragma omp parallel for ordered schedule (dynamic) num_threads (4) if (0)
+ for (j = 0; j < 1000; j++)
+ {
+#pragma omp ordered
+ check (j);
+ }
+
+ cnt = 0;
+#pragma omp parallel for ordered schedule (dynamic) num_threads (4) if (1)
+ for (j = 0; j < 1000; j++)
+ {
+#pragma omp ordered
+ check (j);
+ }
+
+ cnt = 0;
+#pragma omp parallel for ordered schedule (guided) num_threads (4) if (0)
+ for (j = 0; j < 1000; j++)
+ {
+#pragma omp ordered
+ check (j);
+ }
+
+ cnt = 0;
+#pragma omp parallel for ordered schedule (guided) num_threads (4) if (1)
+ for (j = 0; j < 1000; j++)
+ {
+#pragma omp ordered
+ check (j);
+ }
+
+ return 0;
+}