]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
parser.c (cp_parser_omp_for_loop): Disallow ordered clause with argument for range...
authorJakub Jelinek <jakub@redhat.com>
Fri, 19 Oct 2018 08:40:35 +0000 (10:40 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 19 Oct 2018 08:40:35 +0000 (10:40 +0200)
* parser.c (cp_parser_omp_for_loop): Disallow ordered clause with
argument for range-for loops.

* g++.dg/gomp/doacross-1.C: New test.

From-SVN: r265307

gcc/cp/ChangeLog.gomp
gcc/cp/parser.c
gcc/testsuite/ChangeLog.gomp
gcc/testsuite/g++.dg/gomp/doacross-1.C [new file with mode: 0644]

index 63e41c8f7175fd322350ffb1cb97d5f7967e16ac..94472fcf6a9d4df7d01816a5aea4a7d930806896 100644 (file)
@@ -1,3 +1,8 @@
+2018-10-19  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_parser_omp_for_loop): Disallow ordered clause with
+       argument for range-for loops.
+
 2018-10-18  Jakub Jelinek  <jakub@redhat.com>
 
        * parser.c (cp_parser_omp_taskloop): Add forward declaration.
index ae92961634b2a4111ce318879e11bfe48c7df9ea..e3c36b3dca67ec0b7b2fd15dab53871a2af241f6 100644 (file)
@@ -36139,6 +36139,11 @@ cp_parser_omp_for_loop (cp_parser *parser, enum tree_code code, tree clauses,
                    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;
            }
        }
index 5a471f84ec6d7fd360061a3d51c888637cac8061..d67caa1efdeca986a93ab747e8964e50dff4fbac 100644 (file)
@@ -1,3 +1,7 @@
+2018-10-19  Jakub Jelinek  <jakub@redhat.com>
+
+       * g++.dg/gomp/doacross-1.C: New test.
+
 2018-10-18  Jakub Jelinek  <jakub@redhat.com>
 
        * c-c++-common/gomp/clauses-1.c (foo): Add ntm argument and
diff --git a/gcc/testsuite/g++.dg/gomp/doacross-1.C b/gcc/testsuite/g++.dg/gomp/doacross-1.C
new file mode 100644 (file)
index 0000000..9381b3a
--- /dev/null
@@ -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)
+      ;
+}