diff options
author | Martin Jambor <mjambor@suse.cz> | 2010-03-18 21:07:13 +0100 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2010-03-18 21:07:13 +0100 |
commit | 8132a837da9fb586a5fd2596528178f9ea6f97a2 (patch) | |
tree | b3c65fe0aa2410f77c557a506bd3f0cf02737f6e /gcc/tree-inline.c | |
parent | 7893d7acfe277b4d46f5b4f012f7f76971c33b63 (diff) | |
download | gcc-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.c | 1 |
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; |