re PR c/79428 (ICE in c_parser_consume_token, at c/c-parser.c:770)
authorMarek Polacek <polacek@redhat.com>
Thu, 9 Feb 2017 17:07:26 +0000 (17:07 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Thu, 9 Feb 2017 17:07:26 +0000 (17:07 +0000)
PR c/79428
* c-parser.c (c_parser_omp_ordered): Call c_parser_skip_to_pragma_eol
instead of c_parser_skip_until_found.

* c-c++-common/cilk-plus/CK/pr79428-4.c: New test.
* c-c++-common/cilk-plus/CK/pr79428-7.c: New test.
* c-c++-common/goacc/pr79428-1.c: New test.
* c-c++-common/gomp/pr79428-2.c: New test.
* c-c++-common/gomp/pr79428-5.c: New test.
* c-c++-common/gomp/pr79428-6.c: New test.
* c-c++-common/pr79428-3.c: New test.

From-SVN: r245309

gcc/c/ChangeLog
gcc/c/c-parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-4.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-7.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/goacc/pr79428-1.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/gomp/pr79428-2.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/gomp/pr79428-5.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/gomp/pr79428-6.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/pr79428-3.c [new file with mode: 0644]

index 98f7c4ce48986a88b22cebbd0bbeeb59289f350b..95784d80212c5dbe0f012cfb868d85ae447edbad 100644 (file)
@@ -1,3 +1,9 @@
+2017-02-09  Marek Polacek  <polacek@redhat.com>
+
+       PR c/79428
+       * c-parser.c (c_parser_omp_ordered): Call c_parser_skip_to_pragma_eol
+       instead of c_parser_skip_until_found.
+
 2017-02-09  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/79431
index 8f4f569bd4a365d1b6a52ead22dad1f54769130d..e29924bef6b7c7d9d855bce2f7c9882ee5406116 100644 (file)
@@ -15462,7 +15462,7 @@ c_parser_omp_ordered (c_parser *parser, enum pragma_context context,
   if (context != pragma_stmt && context != pragma_compound)
     {
       c_parser_error (parser, "expected declaration specifiers");
-      c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, NULL);
+      c_parser_skip_to_pragma_eol (parser, false);
       return false;
     }
 
index d1b7cf45fc45550d04af257e1fb2320fe08bc38b..c1161fb5338ad5767c0b62a05051f3c165f618e4 100644 (file)
@@ -1,3 +1,14 @@
+2017-02-09  Marek Polacek  <polacek@redhat.com>
+
+       PR c/79428
+       * c-c++-common/cilk-plus/CK/pr79428-4.c: New test.
+       * c-c++-common/cilk-plus/CK/pr79428-7.c: New test.
+       * c-c++-common/goacc/pr79428-1.c: New test.
+       * c-c++-common/gomp/pr79428-2.c: New test.
+       * c-c++-common/gomp/pr79428-5.c: New test.
+       * c-c++-common/gomp/pr79428-6.c: New test.
+       * c-c++-common/pr79428-3.c: New test.
+
 2017-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
 
        * gcc.target/s390/s390.exp: Fix test glob pattern for vector
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-4.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-4.c
new file mode 100644 (file)
index 0000000..cd4d406
--- /dev/null
@@ -0,0 +1,3 @@
+/* PR c/79428 */
+/* { dg-options "-fcilkplus" } */
+#pragma cilk grainsize /* { dg-error "must be inside a function" } */
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-7.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-7.c
new file mode 100644 (file)
index 0000000..bc36f51
--- /dev/null
@@ -0,0 +1,3 @@
+/* PR c/79428 */
+/* { dg-options "-fcilkplus" } */
+#pragma simd /* { dg-error "must be inside a function" } */
diff --git a/gcc/testsuite/c-c++-common/goacc/pr79428-1.c b/gcc/testsuite/c-c++-common/goacc/pr79428-1.c
new file mode 100644 (file)
index 0000000..cf4aeaf
--- /dev/null
@@ -0,0 +1,6 @@
+/* PR c/79428 */
+/* { dg-options "-fopenacc" } */
+void
+foo ()
+{
+#pragma acc routine /* { dg-error ".#pragma acc routine. must be at file scope|expected" } */
diff --git a/gcc/testsuite/c-c++-common/gomp/pr79428-2.c b/gcc/testsuite/c-c++-common/gomp/pr79428-2.c
new file mode 100644 (file)
index 0000000..a26c462
--- /dev/null
@@ -0,0 +1,7 @@
+/* PR c/79428 */
+/* { dg-options "-fopenmp" } */
+void
+foo ()
+{
+#pragma omp sections
+#pragma omp section /* { dg-error "'#pragma omp section' may only be used in '#pragma omp sections' construct|not allowed|expected" } */
diff --git a/gcc/testsuite/c-c++-common/gomp/pr79428-5.c b/gcc/testsuite/c-c++-common/gomp/pr79428-5.c
new file mode 100644 (file)
index 0000000..4f2127b
--- /dev/null
@@ -0,0 +1,3 @@
+/* PR c/79428 */
+/* { dg-options "-fopenmp" } */
+#pragma omp ordered /* { dg-error "expected declaration specifiers before end of line" } */
diff --git a/gcc/testsuite/c-c++-common/gomp/pr79428-6.c b/gcc/testsuite/c-c++-common/gomp/pr79428-6.c
new file mode 100644 (file)
index 0000000..7e833e2
--- /dev/null
@@ -0,0 +1,3 @@
+/* PR c/79428 */
+/* { dg-options "-fopenmp" } */
+#pragma omp target /* { dg-error "expected declaration specifiers before end of line" } */
diff --git a/gcc/testsuite/c-c++-common/pr79428-3.c b/gcc/testsuite/c-c++-common/pr79428-3.c
new file mode 100644 (file)
index 0000000..ec7077d
--- /dev/null
@@ -0,0 +1,3 @@
+/* PR c/79428 */
+int i;
+#pragma GCC pch_preprocess /* { dg-error "'#pragma GCC pch_preprocess' must be first" } */