aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/c-parser.c2
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/noncompile/pr35444-1.c3
-rw-r--r--gcc/testsuite/gcc.dg/noncompile/pr35444-2.c4
5 files changed, 21 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6816508..92bf954 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-02-13 Joseph Myers <joseph@codesourcery.com>
+
+ 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 <jakub@redhat.com>
* doc/invoke.texi (-fira): Remove.
diff --git a/gcc/c-parser.c b/gcc/c-parser.c
index 199a5a7..e09c2c1 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 5a940ef..986a361 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2009-02-13 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/35444
+ * gcc.dg/noncompile/pr35444-1.c, gcc.dg/noncompile/pr35444-2.c:
+ New tests.
+
2009-02-12 Jason Merrill <jason@redhat.com>
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 0000000..f855887
--- /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 0000000..43817b9
--- /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() {}