diff options
author | Joseph Myers <joseph@codesourcery.com> | 2009-02-16 22:55:56 +0000 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2009-02-16 22:55:56 +0000 |
commit | a47e20fd934a9dd9b392de5325a9d7f6a0d6acda (patch) | |
tree | ead750183f414452b82a0ca13a1347344d4a8b69 | |
parent | 50aab7dc401b3b6cc0f74982231eb529ef06ebe1 (diff) | |
download | gcc-a47e20fd934a9dd9b392de5325a9d7f6a0d6acda.tar.gz |
re PR c/35446 (ICE with invalid array initializer)
PR c/35446
* c-parser.c (c_parser_braced_init): Call pop_init_level when
skipping until next close brace.
testsuite:
* gcc.dg/noncompile/init-5.c: New test.
* gcc.dg/init-bad-4.c: Adjust expected errors.
From-SVN: r144216
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-parser.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/init-bad-4.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/noncompile/init-5.c | 4 |
5 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 981f150f3b1..e30a66812ab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-02-16 Joseph Myers <joseph@codesourcery.com> + + PR c/35446 + * c-parser.c (c_parser_braced_init): Call pop_init_level when + skipping until next close brace. + 2009-02-16 H.J. Lu <hongjiu.lu@intel.com> PR target/37049 diff --git a/gcc/c-parser.c b/gcc/c-parser.c index e09c2c17161..9aef031a8eb 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -3036,6 +3036,7 @@ c_parser_braced_init (c_parser *parser, tree type, bool nested_p) ret.value = error_mark_node; ret.original_code = ERROR_MARK; c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, "expected %<}%>"); + pop_init_level (0); return ret; } c_parser_consume_token (parser); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 73f0bc58a6e..a16adbd035c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2009-02-16 Joseph Myers <joseph@codesourcery.com> + + PR c/35446 + * gcc.dg/noncompile/init-5.c: New test. + * gcc.dg/init-bad-4.c: Adjust expected errors. + 2009-02-16 H.J. Lu <hongjiu.lu@intel.com> PR target/37049 diff --git a/gcc/testsuite/gcc.dg/init-bad-4.c b/gcc/testsuite/gcc.dg/init-bad-4.c index 3f03002908a..c8c11845c5c 100644 --- a/gcc/testsuite/gcc.dg/init-bad-4.c +++ b/gcc/testsuite/gcc.dg/init-bad-4.c @@ -2,4 +2,4 @@ /* Origin: Richard Guenther <rguenth@gcc.gnu.org> */ /* { dg-do compile } */ -struct A { } a = (struct A) {{ (X)0 }}; /* { dg-error "no members|extra brace|near|undeclared|constant|compound" } */ +struct A { } a = (struct A) {{ (X)0 }}; /* { dg-error "no members|extra brace|near|undeclared|constant|compound|excess" } */ diff --git a/gcc/testsuite/gcc.dg/noncompile/init-5.c b/gcc/testsuite/gcc.dg/noncompile/init-5.c new file mode 100644 index 00000000000..366397aefad --- /dev/null +++ b/gcc/testsuite/gcc.dg/noncompile/init-5.c @@ -0,0 +1,4 @@ +/* Test for ICE after syntax error in initializer with range + designator: PR 35446. */ + +int a[2][2] = { [0 ... 1] = { ; } }; /* { dg-error "expected expression" } */ |