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.
2 files changed