aboutsummaryrefslogtreecommitdiff
path: root/gcc/c/c-parser.cc
diff options
context:
space:
mode:
authorSandra Loosemore <sloosemore@baylibre.com>2025-05-24 03:21:18 +0000
committerSandra Loosemore <sloosemore@baylibre.com>2025-05-30 14:12:38 +0000
commitb368dd5de53fc981b5b20e2fd6d7de9116e82331 (patch)
tree7df72ae52f6688678651b25bcf98ae25d05eedf3 /gcc/c/c-parser.cc
parent9fa1f93eb7e39ccabf39a45e89f1a35adcf1bf1f (diff)
downloadgcc-b368dd5de53fc981b5b20e2fd6d7de9116e82331.zip
gcc-b368dd5de53fc981b5b20e2fd6d7de9116e82331.tar.gz
gcc-b368dd5de53fc981b5b20e2fd6d7de9116e82331.tar.bz2
OpenMP: Fix ICE in metadirective recovery after error [PR120180]
It's not clear whether a metadirective in a loop nest is supposed to be valid, but GCC certainly shouldn't be ICE'ing after diagnosing it as an error. gcc/c/ChangeLog PR c/120180 * c-parser.cc (c_parser_omp_metadirective): Only consume the token if it is the expected close paren. gcc/cp/ChangeLog PR c/120180 * parser.cc (cp_parser_omp_metadirective): Only consume the token if it is the expected close paren. gcc/testsuite/ChangeLog PR c/120180 * c-c++-common/gomp/pr120180.c: New. (cherry picked from commit 65e0ed2310a1b0d1a3255583bbfb8a8d86c5aea5)
Diffstat (limited to 'gcc/c/c-parser.cc')
-rw-r--r--gcc/c/c-parser.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc
index 22ec0f8..d825e05 100644
--- a/gcc/c/c-parser.cc
+++ b/gcc/c/c-parser.cc
@@ -29247,7 +29247,10 @@ c_parser_omp_metadirective (c_parser *parser, bool *if_p)
goto add;
case CPP_CLOSE_PAREN:
if (nesting_depth-- == 0)
- break;
+ {
+ c_parser_consume_token (parser);
+ break;
+ }
goto add;
default:
add:
@@ -29259,8 +29262,6 @@ c_parser_omp_metadirective (c_parser *parser, bool *if_p)
break;
}
- c_parser_consume_token (parser);
-
if (!skip)
{
c_token eol_token;