From f007042e20e61d8e9b6472b47bb4005bc91baec0 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Fri, 13 Feb 2009 01:00:24 +0000 Subject: re PR c/35444 (ICE with invalid function declaration) PR c/35444 * c-parser.c (c_parser_parms_list_declarator): Discard pending sizes on syntax error after some arguments have been parsed. testsuite: * gcc.dg/noncompile/pr35444-1.c, gcc.dg/noncompile/pr35444-2.c: New tests. From-SVN: r144149 --- gcc/ChangeLog | 6 ++++++ gcc/c-parser.c | 2 ++ gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gcc.dg/noncompile/pr35444-1.c | 3 +++ gcc/testsuite/gcc.dg/noncompile/pr35444-2.c | 4 ++++ 5 files changed, 21 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/noncompile/pr35444-1.c create mode 100644 gcc/testsuite/gcc.dg/noncompile/pr35444-2.c (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6816508903d..92bf954f0b2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-02-13 Joseph Myers + + PR c/35444 + * c-parser.c (c_parser_parms_list_declarator): Discard pending + sizes on syntax error after some arguments have been parsed. + 2009-02-12 Jakub Jelinek * doc/invoke.texi (-fira): Remove. diff --git a/gcc/c-parser.c b/gcc/c-parser.c index 199a5a72f3f..e09c2c17161 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -2578,6 +2578,7 @@ c_parser_parms_list_declarator (c_parser *parser, tree attrs) "expected %<;%>, %<,%> or %<)%>")) { c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); + get_pending_sizes (); return NULL; } if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) @@ -2605,6 +2606,7 @@ c_parser_parms_list_declarator (c_parser *parser, tree attrs) { c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + get_pending_sizes (); return NULL; } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5a940efcd65..986a3619b5f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2009-02-13 Joseph Myers + + PR c/35444 + * gcc.dg/noncompile/pr35444-1.c, gcc.dg/noncompile/pr35444-2.c: + New tests. + 2009-02-12 Jason Merrill PR c++/38950 diff --git a/gcc/testsuite/gcc.dg/noncompile/pr35444-1.c b/gcc/testsuite/gcc.dg/noncompile/pr35444-1.c new file mode 100644 index 00000000000..f855887868b --- /dev/null +++ b/gcc/testsuite/gcc.dg/noncompile/pr35444-1.c @@ -0,0 +1,3 @@ +/* PR 35444: ICE from pending VLA sizes in invalid parameter list. */ +void foo(int n, int a[n], int 0); /* { dg-error "expected" } */ +void bar() {} diff --git a/gcc/testsuite/gcc.dg/noncompile/pr35444-2.c b/gcc/testsuite/gcc.dg/noncompile/pr35444-2.c new file mode 100644 index 00000000000..43817b90dc4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/noncompile/pr35444-2.c @@ -0,0 +1,4 @@ +/* PR 35444: ICE from pending VLA sizes in invalid parameter list. + Similar case to the PR, but with "..." before the syntax error. */ +void foo(int n, int a[n], ... 0); /* { dg-error "expected" } */ +void bar() {} -- cgit v1.2.1