diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-parser.c | 12 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/clause-4.C | 23 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/gomp/clause-2.c | 23 |
7 files changed, 82 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 648cd8f..1cc7ca2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-12-17 Jakub Jelinek <jakub@redhat.com> + + PR c/34506 + * c-parser.c (c_parser_omp_all_clauses): Accept optional comma + in between clauses. + 2007-12-17 Dorit Nuzman <dorit@il.ibm.com> PR tree-optimization/34445 diff --git a/gcc/c-parser.c b/gcc/c-parser.c index c2e5435..107b114 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -7262,14 +7262,22 @@ c_parser_omp_all_clauses (c_parser *parser, unsigned int mask, const char *where) { tree clauses = NULL; + bool first = true; while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL)) { - location_t here = c_parser_peek_token (parser)->location; - const pragma_omp_clause c_kind = c_parser_omp_clause_name (parser); + location_t here; + pragma_omp_clause c_kind; const char *c_name; tree prev = clauses; + if (!first && c_parser_next_token_is (parser, CPP_COMMA)) + c_parser_consume_token (parser); + + first = false; + here = c_parser_peek_token (parser)->location; + c_kind = c_parser_omp_clause_name (parser); + switch (c_kind) { case PRAGMA_OMP_CLAUSE_COPYIN: diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index eaa9ff2..e4c2244 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2007-12-17 Jakub Jelinek <jakub@redhat.com> + + PR c/34506 + * parser.c (cp_parser_omp_all_clauses): Accept optional comma + in between clauses. + 2007-12-15 Alexandre Oliva <aoliva@redhat.com> PR debug/7081 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 879e701..f3d4ce2 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -19671,13 +19671,20 @@ cp_parser_omp_all_clauses (cp_parser *parser, unsigned int mask, const char *where, cp_token *pragma_tok) { tree clauses = NULL; + bool first = true; while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL)) { - pragma_omp_clause c_kind = cp_parser_omp_clause_name (parser); + pragma_omp_clause c_kind; const char *c_name; tree prev = clauses; + if (!first && cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) + cp_lexer_consume_token (parser->lexer); + + c_kind = cp_parser_omp_clause_name (parser); + first = false; + switch (c_kind) { case PRAGMA_OMP_CLAUSE_COPYIN: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 62b67a8..81f3516 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2007-12-17 Jakub Jelinek <jakub@redhat.com> + + PR c/34506 + * gcc.dg/gomp/clause-2.c: New test. + * g++.dg/gomp/clause-4.C: New test. + 2007-12-17 Tobias Burnus <burnus@net-b.de> * gfortran.dg/initialization_16.f90: Update as FLOAT/SNGL are diff --git a/gcc/testsuite/g++.dg/gomp/clause-4.C b/gcc/testsuite/g++.dg/gomp/clause-4.C new file mode 100644 index 0000000..06b91e8 --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/clause-4.C @@ -0,0 +1,23 @@ +// PR c/34506 +// { dg-do compile } + +#define p parallel + +void +foo (int x) +{ +#pragma omp p num_threads (4) if (1) private (x) + ; +#pragma omp p num_threads(4)if(1)private(x) + ; +#pragma omp p num_threads (4), if (1) , private (x) + ; +#pragma omp p num_threads(4),if(1),private(x) + ; +#pragma omp p, num_threads (4), if (1), private (x) // { dg-error "clause before" } + ; +#pragma omp p num_threads (4), if (1), private (x), // { dg-error "clause before" } + ; +#pragma omp p num_threads (4), , if (1), private (x) // { dg-error "clause before" } + ; +} diff --git a/gcc/testsuite/gcc.dg/gomp/clause-2.c b/gcc/testsuite/gcc.dg/gomp/clause-2.c new file mode 100644 index 0000000..4b12fc8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/clause-2.c @@ -0,0 +1,23 @@ +/* PR c/34506 */ +/* { dg-do compile } */ + +#define p parallel + +void +foo (int x) +{ +#pragma omp p num_threads (4) if (1) private (x) + ; +#pragma omp p num_threads(4)if(1)private(x) + ; +#pragma omp p num_threads (4), if (1) , private (x) + ; +#pragma omp p num_threads(4),if(1),private(x) + ; +#pragma omp p, num_threads (4), if (1), private (x) /* { dg-error "clause before" } */ + ; +#pragma omp p num_threads (4), if (1), private (x), /* { dg-error "clause before" } */ + ; +#pragma omp p num_threads (4), , if (1), private (x) /* { dg-error "clause before" } */ + ; +} |