diff options
author | Jason Merrill <jason@redhat.com> | 2004-08-27 22:35:15 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2004-08-27 22:35:15 -0400 |
commit | bcac21a0c6b6e927a963a1f4403891e526aa40ff (patch) | |
tree | 0191e2c8c48add36cb25660ae35252f8c6311ae3 /gcc | |
parent | 40aac94801f86355bd86cf5b340481ee2f501d3c (diff) | |
download | gcc-bcac21a0c6b6e927a963a1f4403891e526aa40ff.zip gcc-bcac21a0c6b6e927a963a1f4403891e526aa40ff.tar.gz gcc-bcac21a0c6b6e927a963a1f4403891e526aa40ff.tar.bz2 |
re PR c++/16851 (ICE when throwing a comma expression)
PR c++/16851
* tree.c (stabilize_init): See through a COMPOUND_EXPR.
From-SVN: r86688
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/tree.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/eh/throw2.C | 8 |
3 files changed, 13 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f1cac07..976d2e5 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2004-08-27 Jason Merrill <jason@redhat.com> + PR c++/16851 + * tree.c (stabilize_init): See through a COMPOUND_EXPR. + PR c++/13684 * decl.c (expand_static_init): Use thread-safety API. (register_dtor_fn): Return the call, don't expand it. diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 9933467..ec5a749 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -2316,6 +2316,8 @@ stabilize_init (tree init, tree *initp) t = TREE_OPERAND (t, 1); if (TREE_CODE (t) == TARGET_EXPR) t = TARGET_EXPR_INITIAL (t); + if (TREE_CODE (t) == COMPOUND_EXPR) + t = expr_last (t); if (TREE_CODE (t) == CONSTRUCTOR && CONSTRUCTOR_ELTS (t) == NULL_TREE) { diff --git a/gcc/testsuite/g++.dg/eh/throw2.C b/gcc/testsuite/g++.dg/eh/throw2.C new file mode 100644 index 0000000..3751327 --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/throw2.C @@ -0,0 +1,8 @@ +// PR c++/16851 + +struct A { A(int); }; + +void f() +{ + throw (3,A(t)); +} |