aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2010-03-18 21:07:13 +0100
committerMartin Jambor <jamborm@gcc.gnu.org>2010-03-18 21:07:13 +0100
commit8132a837da9fb586a5fd2596528178f9ea6f97a2 (patch)
treeb3c65fe0aa2410f77c557a506bd3f0cf02737f6e /gcc/tree-inline.c
parent7893d7acfe277b4d46f5b4f012f7f76971c33b63 (diff)
downloadgcc-8132a837da9fb586a5fd2596528178f9ea6f97a2.zip
gcc-8132a837da9fb586a5fd2596528178f9ea6f97a2.tar.gz
gcc-8132a837da9fb586a5fd2596528178f9ea6f97a2.tar.bz2
re PR middle-end/42450 (another GCC 4.5 ICE on C++ templated code)
2010-03-18 Martin Jambor <mjambor@suse.cz> PR middle-end/42450 * cgraph.h (cgraph_redirect_edge_call_stmt_to_callee): Declare. * cgraphunit.c (cgraph_materialize_all_clones): Update calls in all non-clones. Moved call redirection... (cgraph_redirect_edge_call_stmt_to_callee): ...to this new function. (cgraph_materialize_all_clones): Dispose of all combined_args_to_skip bitmaps. (verify_cgraph_node): Do not check for edges pointing to wrong nodes in inline clones. * tree-inline.c (copy_bb): Call cgraph_redirect_edge_call_stmt_to_callee. * ipa.c (cgraph_remove_unreachable_nodes): Call cgraph_node_remove_callees even when there are used clones. * testsuite/g++.dg/torture/pr42450.C: New test. From-SVN: r157546
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index f3c4204..e0928b9 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1650,6 +1650,7 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
bb->frequency,
copy_basic_block->frequency);
}
+ stmt = cgraph_redirect_edge_call_stmt_to_callee (edge);
}
break;