diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-09-17 00:05:15 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2008-09-17 00:05:15 +0200 |
commit | 326a4d4ef1c3b80f4cfbf17f52a42c263abb25df (patch) | |
tree | d9d2e309acc892504ceaae7258e97d76c4d9fb0b /gcc/cp | |
parent | 08222495cc9ea47746057e95002b7a467309964c (diff) | |
download | gcc-326a4d4ef1c3b80f4cfbf17f52a42c263abb25df.tar.gz |
re PR c++/37531 (ICE with invalid array initialization)
PR c++/37531
* semantics.c (finish_compound_literal): Return error_mark_node if
type is errorneous.
* g++.dg/parse/crash47.C: New test.
From-SVN: r140400
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 3 |
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1bc8596a9b5..a78e5f460be 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2008-09-16 Jakub Jelinek <jakub@redhat.com> + PR c++/37531 + * semantics.c (finish_compound_literal): Return error_mark_node if + type is errorneous. + PR c++/37532 * lex.c (init_reswords): Don't populate ridpointers for D_CONLY reserved words. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index cfd06bb08cb..c6f921a968d 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2105,6 +2105,9 @@ finish_unary_op_expr (enum tree_code code, tree expr) tree finish_compound_literal (tree type, tree compound_literal) { + if (type == error_mark_node) + return error_mark_node; + if (!TYPE_OBJ_P (type)) { error ("compound literal of non-object type %qT", type); |