]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c/59073 (ICE with missing increment in OpenMP for-loop)
authorJakub Jelinek <jakub@redhat.com>
Tue, 22 Apr 2014 16:22:22 +0000 (18:22 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 22 Apr 2014 16:22:22 +0000 (18:22 +0200)
PR c/59073
c/
* c-parser.c (c_parser_omp_parallel): If c_parser_omp_for
fails, don't set OM_PARALLEL_COMBINED and return NULL.
cp/
* parser.c (cp_parser_omp_parallel): If cp_parser_omp_for
fails, don't set OM_PARALLEL_COMBINED and return NULL.
testsuite/
* c-c++-common/gomp/pr59073.c: New test.

From-SVN: r209646

gcc/c/ChangeLog
gcc/c/c-parser.c
gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/gomp/pr59073.c [new file with mode: 0644]

index bacfbe36702f3edb07214b00aeca6123c1228b14..2d182f354d5ab90578418359e2e872c27405668e 100644 (file)
@@ -1,3 +1,9 @@
+2014-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/59073
+       * c-parser.c (c_parser_omp_parallel): If c_parser_omp_for
+       fails, don't set OM_PARALLEL_COMBINED and return NULL.
+
 2014-04-12  Igor Zamyatin  <igor.zamyatin@intel.com>
 
        PR middle-end/60469
index 5653e49f4824f59c6d9f51608fb2ffa63090a254..0deab8404563517cff3fe8417194180eeee2fb87 100644 (file)
@@ -12208,10 +12208,12 @@ c_parser_omp_parallel (location_t loc, c_parser *parser,
       if (!flag_openmp)  /* flag_openmp_simd  */
        return c_parser_omp_for (loc, parser, p_name, mask, cclauses);
       block = c_begin_omp_parallel ();
-      c_parser_omp_for (loc, parser, p_name, mask, cclauses);
+      tree ret = c_parser_omp_for (loc, parser, p_name, mask, cclauses);
       stmt
        = c_finish_omp_parallel (loc, cclauses[C_OMP_CLAUSE_SPLIT_PARALLEL],
                                 block);
+      if (ret == NULL_TREE)
+       return ret;
       OMP_PARALLEL_COMBINED (stmt) = 1;
       return stmt;
     }
index b7db35039f1f1148ffd9a6fda74d8c13f69f965b..2105ab2cd9113073ae9d075263a18837ecd44a35 100644 (file)
@@ -1,3 +1,9 @@
+2014-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/59073
+       * parser.c (cp_parser_omp_parallel): If cp_parser_omp_for
+       fails, don't set OM_PARALLEL_COMBINED and return NULL.
+
 2014-04-18  Jason Merrill  <jason@redhat.com>
 
        DR 1571
index bb59e3bcdd19b3d99c06665b85d1ba445434b112..4e6a2b88f32011eb7576d996498b0a2e85f8c8e8 100644 (file)
@@ -29829,10 +29829,12 @@ cp_parser_omp_parallel (cp_parser *parser, cp_token *pragma_tok,
        return cp_parser_omp_for (parser, pragma_tok, p_name, mask, cclauses);
       block = begin_omp_parallel ();
       save = cp_parser_begin_omp_structured_block (parser);
-      cp_parser_omp_for (parser, pragma_tok, p_name, mask, cclauses);
+      tree ret = cp_parser_omp_for (parser, pragma_tok, p_name, mask, cclauses);
       cp_parser_end_omp_structured_block (parser, save);
       stmt = finish_omp_parallel (cclauses[C_OMP_CLAUSE_SPLIT_PARALLEL],
                                  block);
+      if (ret == NULL_TREE)
+       return ret;
       OMP_PARALLEL_COMBINED (stmt) = 1;
       return stmt;
     }
index 2dced65048dea6f22fafba0115afafa4c991b757..389ac5d08e0d458bc86a354684b6112b616c9b9d 100644 (file)
@@ -1,3 +1,8 @@
+2014-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/59073
+       * c-c++-common/gomp/pr59073.c: New test.
+
 2014-04-22  Alex Velenko  <Alex.Velenko@arm.com>
 
        * gcc.target/aarch64/vreinterpret_f64_1.c: New.
diff --git a/gcc/testsuite/c-c++-common/gomp/pr59073.c b/gcc/testsuite/c-c++-common/gomp/pr59073.c
new file mode 100644 (file)
index 0000000..543ff5d
--- /dev/null
@@ -0,0 +1,12 @@
+/* PR c/59073 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+void
+foo ()
+{
+  int i; 
+#pragma omp distribute parallel for
+  for (i = 0; i < 10; i)       /* { dg-error "invalid increment expression" } */
+    ;
+}