summaryrefslogtreecommitdiff
path: root/gcc/c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2020-06-16 16:30:05 +0200
committerJakub Jelinek <jakub@redhat.com>2020-06-16 16:30:05 +0200
commitfab46c5df7500f2ce640f98320d47a19d3de8a2f (patch)
tree5f66022c0b652a94ea9079291e48af6d6111fdcb /gcc/c
parente70fbee1a3dd9fdeb661366dbf3096d76c4e2d6e (diff)
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/c')
-rw-r--r--gcc/c/c-parser.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index df0b59f9f95..fea6a09f771 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -14782,6 +14782,7 @@ c_parser_omp_clause_schedule (c_parser *parser, tree list)
c = build_omp_clause (loc, OMP_CLAUSE_SCHEDULE);
+ location_t comma = UNKNOWN_LOCATION;
while (c_parser_next_token_is (parser, CPP_NAME))
{
tree kind = c_parser_peek_token (parser)->value;
@@ -14794,16 +14795,22 @@ c_parser_omp_clause_schedule (c_parser *parser, tree list)
modifiers |= OMP_CLAUSE_SCHEDULE_NONMONOTONIC;
else
break;
+ comma = UNKNOWN_LOCATION;
c_parser_consume_token (parser);
if (nmodifiers++ == 0
&& c_parser_next_token_is (parser, CPP_COMMA))
- c_parser_consume_token (parser);
+ {
+ comma = c_parser_peek_token (parser)->location;
+ c_parser_consume_token (parser);
+ }
else
{
c_parser_require (parser, CPP_COLON, "expected %<:%>");
break;
}
}
+ if (comma != UNKNOWN_LOCATION)
+ error_at (comma, "expected %<:%>");
if ((modifiers & (OMP_CLAUSE_SCHEDULE_MONOTONIC
| OMP_CLAUSE_SCHEDULE_NONMONOTONIC))