@@ -36139,6 +36139,11 @@ cp_parser_omp_for_loop (cp_parser *parse
pre_body = this_pre_body;
}
+ if (ordered_cl)
+ error_at (OMP_CLAUSE_LOCATION (ordered_cl),
+ "%<ordered%> clause with parameter on "
+ "range-based %<for%> loop");
+
goto parse_close_paren;
}
}
@@ -0,0 +1,21 @@
+// { dg-do compile { target c++11 } }
+// { dg-options "-fopenmp" }
+
+int a[42];
+
+void
+foo ()
+{
+ #pragma omp for ordered (1) // { dg-error "'ordered' clause with parameter on range-based 'for' loop" }
+ for (auto x : a)
+ ;
+}
+
+void
+bar ()
+{
+ #pragma omp for ordered (2) // { dg-error "'ordered' clause with parameter on range-based 'for' loop" }
+ for (int i = 0; i < 1; i++)
+ for (auto x : a)
+ ;
+}