diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2006-03-06 02:01:29 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2006-03-06 02:01:29 +0000 |
commit | a3c5267cab6b291e842de6626be76c3355e6b447 (patch) | |
tree | fef6f146464dcfcf6d6123a157e675a7ece31dc4 /gcc/cp/tree.c | |
parent | c92f986f5f313715fa9ebcb1237b2cd52172e714 (diff) | |
download | gcc-a3c5267cab6b291e842de6626be76c3355e6b447.zip gcc-a3c5267cab6b291e842de6626be76c3355e6b447.tar.gz gcc-a3c5267cab6b291e842de6626be76c3355e6b447.tar.bz2 |
re PR c++/15759 (ICE with function pointers)
PR c++/15759
* tree.c (bot_manip): Don't call mark_used.
* g++.dg/other/default4.C: New test.
From-SVN: r111754
Diffstat (limited to 'gcc/cp/tree.c')
-rw-r--r-- | gcc/cp/tree.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 16e87ec..d58b5b3 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1173,16 +1173,11 @@ bot_manip (tree* tp, int* walk_subtrees, void* data) tree u; if (TREE_CODE (TREE_OPERAND (t, 1)) == AGGR_INIT_EXPR) - { - mark_used (TREE_OPERAND (TREE_OPERAND (TREE_OPERAND (t, 1), 0), 0)); - u = build_cplus_new - (TREE_TYPE (t), break_out_target_exprs (TREE_OPERAND (t, 1))); - } + u = build_cplus_new + (TREE_TYPE (t), break_out_target_exprs (TREE_OPERAND (t, 1))); else - { - u = build_target_expr_with_type - (break_out_target_exprs (TREE_OPERAND (t, 1)), TREE_TYPE (t)); - } + u = build_target_expr_with_type + (break_out_target_exprs (TREE_OPERAND (t, 1)), TREE_TYPE (t)); /* Map the old variable to the new one. */ splay_tree_insert (target_remap, @@ -1197,8 +1192,6 @@ bot_manip (tree* tp, int* walk_subtrees, void* data) *walk_subtrees = 0; return NULL_TREE; } - else if (TREE_CODE (t) == CALL_EXPR) - mark_used (TREE_OPERAND (TREE_OPERAND (t, 0), 0)); /* Make a copy of this node. */ return copy_tree_r (tp, walk_subtrees, NULL); |