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/ipa.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/ipa.c')
-rw-r--r-- | gcc/ipa.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -262,10 +262,10 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file) if (!clone) { cgraph_release_function_body (node); - cgraph_node_remove_callees (node); node->analyzed = false; node->local.inlinable = false; } + cgraph_node_remove_callees (node); if (node->prev_sibling_clone) node->prev_sibling_clone->next_sibling_clone = node->next_sibling_clone; else if (node->clone_of) |