diff options
author | Jakub Jelinek <jakub@redhat.com> | 2020-06-16 16:30:05 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2020-06-16 16:30:05 +0200 |
commit | fab46c5df7500f2ce640f98320d47a19d3de8a2f (patch) | |
tree | 5f66022c0b652a94ea9079291e48af6d6111fdcb /gcc/cp/parser.c | |
parent | e70fbee1a3dd9fdeb661366dbf3096d76c4e2d6e (diff) | |
download | gcc-fab46c5df7500f2ce640f98320d47a19d3de8a2f.zip gcc-fab46c5df7500f2ce640f98320d47a19d3de8a2f.tar.gz gcc-fab46c5df7500f2ce640f98320d47a19d3de8a2f.tar.bz2 |
openmp: Diagnose invalid OpenMP schedule(simd, static)
2020-06-16 Jakub Jelinek <jakub@redhat.com>
gcc/c/
* c-parser.c (c_parser_omp_clause_schedule): Reject modifier separated
from kind by comma rather than colon.
gcc/cp/
* parser.c (cp_parser_omp_clause_schedule): Reject modifier separated
from kind by comma rather than colon.
gcc/testsuite/
* c-c++-common/gomp/schedule-modifiers-2.c: New test.
Diffstat (limited to 'gcc/cp/parser.c')
-rw-r--r-- | gcc/cp/parser.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 799f310..69839ba 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -35864,6 +35864,7 @@ cp_parser_omp_clause_schedule (cp_parser *parser, tree list, location_t location c = build_omp_clause (location, OMP_CLAUSE_SCHEDULE); + location_t comma = UNKNOWN_LOCATION; while (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) { tree id = cp_lexer_peek_token (parser->lexer)->u.value; @@ -35876,16 +35877,22 @@ cp_parser_omp_clause_schedule (cp_parser *parser, tree list, location_t location modifiers |= OMP_CLAUSE_SCHEDULE_NONMONOTONIC; else break; + comma = UNKNOWN_LOCATION; cp_lexer_consume_token (parser->lexer); if (nmodifiers++ == 0 && cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) - cp_lexer_consume_token (parser->lexer); + { + comma = cp_lexer_peek_token (parser->lexer)->location; + cp_lexer_consume_token (parser->lexer); + } else { cp_parser_require (parser, CPP_COLON, RT_COLON); break; } } + if (comma != UNKNOWN_LOCATION) + error_at (comma, "expected %<:%>"); if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) { |