openmp: Diagnose omp::directive attribute without balanced token argument [PR102413]
authorJakub Jelinek <jakub@redhat.com>
Thu, 23 Sep 2021 08:07:49 +0000 (10:07 +0200)
committerJakub Jelinek <jakub@redhat.com>
Thu, 23 Sep 2021 08:10:58 +0000 (10:10 +0200)
commit0d39eb28fd2ab00306bd7c0a87b6c0ed615b5d12
tree1840e19cf1c86e1ab7161aa17d123bc9551dce41
parent4c0c43623efe2900dd0feb3abf8b611023362c43
openmp: Diagnose omp::directive attribute without balanced token argument [PR102413]

If omp::directive attribute argument starting with the opening ( is not a balanced
token sequence, then cp_parser_skip_balanced_tokens (parser, 1) returns 1,
but the code was subtracting 2 from it and iterating until it was 0, so for the
non-balanced case it iterated from (size_t) -1 down to 0.

The following patch just diagnoses that as an error.

2021-09-23  Jakub Jelinek  <jakub@redhat.com>

PR c++/102413
* parser.c (cp_parser_omp_directive_args): Diagnose if omp::directive
is not followed by a balanced token sequence starting with open paren.

* g++.dg/gomp/attrs-14.C: New test.
gcc/cp/parser.c
gcc/testsuite/g++.dg/gomp/attrs-14.C [new file with mode: 0644]