aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2011-05-05 16:50:57 -0400
committerJason Merrill <jason@gcc.gnu.org>2011-05-05 16:50:57 -0400
commitdeb5046baa31e38ba18bf9bab2e0a5fa3cef6719 (patch)
tree4c4f66836eb68f998569bb9974060b8fbfd2a0ac /gcc/tree-inline.c
parent31e292c7a319a9a8bc449cf8514ed45951bb706e (diff)
downloadgcc-deb5046baa31e38ba18bf9bab2e0a5fa3cef6719.zip
gcc-deb5046baa31e38ba18bf9bab2e0a5fa3cef6719.tar.gz
gcc-deb5046baa31e38ba18bf9bab2e0a5fa3cef6719.tar.bz2
re PR c++/40975 (ICE in copy_tree_r on array new)
PR c++/40975 * tree-inline.c (copy_tree_r): Use copy_statement_list. (copy_statement_list): Don't recurse. * stor-layout.c (copy_self_referential_tree_r): Don't allow STATEMENT_LIST. From-SVN: r173451
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 49488d4..46855a1 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -662,8 +662,6 @@ copy_statement_list (tree *tp)
for (; !tsi_end_p (oi); tsi_next (&oi))
{
tree stmt = tsi_stmt (oi);
- if (TREE_CODE (stmt) == STATEMENT_LIST)
- copy_statement_list (&stmt);
tsi_link_after (&ni, stmt, TSI_CONTINUE_LINKING);
}
}
@@ -4271,19 +4269,9 @@ copy_tree_r (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
*tp = new_tree;
}
else if (code == STATEMENT_LIST)
- {
- /* We used to just abort on STATEMENT_LIST, but we can run into them
- with statement-expressions (c++/40975). */
- tree new_list = alloc_stmt_list ();
- tree_stmt_iterator i = tsi_start (*tp);
- tree_stmt_iterator j = tsi_last (new_list);
- for (; !tsi_end_p (i); tsi_next (&i))
- {
- tree stmt = tsi_stmt (i);
- tsi_link_after (&j, stmt, TSI_CONTINUE_LINKING);
- }
- *tp = new_list;
- }
+ /* We used to just abort on STATEMENT_LIST, but we can run into them
+ with statement-expressions (c++/40975). */
+ copy_statement_list (tp);
else if (TREE_CODE_CLASS (code) == tcc_type)
*walk_subtrees = 0;
else if (TREE_CODE_CLASS (code) == tcc_declaration)