re PR c/59073 (ICE with missing increment in OpenMP for-loop)

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
This commit is contained in:
Jakub Jelinek 2014-04-22 18:22:22 +02:00 committed by Jakub Jelinek
parent 621ad2de21
commit e162a13486
6 changed files with 35 additions and 2 deletions

View 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

View 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;
}

View 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

View 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;
}

View 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.

View File

@ -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" } */
;
}