diff options
author | Martin Jambor <mjambor@suse.cz> | 2014-04-04 16:11:06 +0200 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2014-04-04 16:11:06 +0200 |
commit | 610c8ef0a420e5267cbccd5a4509f0ce3095e14c (patch) | |
tree | a981c037f8ae40dbdb770ab5dcc5d5474cb95903 /gcc/ipa-inline.c | |
parent | 57ef133bab005d4a7eb1cb189b632fd2dd7fd95c (diff) | |
download | gcc-610c8ef0a420e5267cbccd5a4509f0ce3095e14c.zip gcc-610c8ef0a420e5267cbccd5a4509f0ce3095e14c.tar.gz gcc-610c8ef0a420e5267cbccd5a4509f0ce3095e14c.tar.bz2 |
re PR ipa/60640 (ICE edge points to wrong declaration / verify_cgraph_node failed)
2014-04-04 Martin Jambor <mjambor@suse.cz>
PR ipa/60640
* cgraph.h (cgraph_clone_node): New parameter added to declaration.
Adjust all callers.
* cgraph.c (clone_of_p): Also return true if thunks match.
(verify_edge_corresponds_to_fndecl): Removed extraneous call to
cgraph_function_or_thunk_node and an obsolete comment.
* cgraphclones.c (build_function_type_skip_args): Moved upwards in the
file.
(build_function_decl_skip_args): Likewise.
(set_new_clone_decl_and_node_flags): New function.
(duplicate_thunk_for_node): Likewise.
(redirect_edge_duplicating_thunks): Likewise.
(cgraph_clone_node): New parameter args_to_skip, pass it to
redirect_edge_duplicating_thunks which is called instead of
cgraph_redirect_edge_callee.
(cgraph_create_virtual_clone): Pass args_to_skip to cgraph_clone_node,
moved setting of a lot of flags to set_new_clone_decl_and_node_flags.
testsuite/
* g++.dg/ipa/pr60640-1.C: New test.
* g++.dg/ipa/pr60640-2.C: Likewise.
* g++.dg/ipa/pr60640-3.C: Likewise.
* g++.dg/ipa/pr60640-4.C: Likewise.
From-SVN: r209097
Diffstat (limited to 'gcc/ipa-inline.c')
-rw-r--r-- | gcc/ipa-inline.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 1e1e118..4051819 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -1383,7 +1383,7 @@ recursive_inlining (struct cgraph_edge *edge, /* We need original clone to copy around. */ master_clone = cgraph_clone_node (node, node->decl, node->count, CGRAPH_FREQ_BASE, - false, vNULL, true, NULL); + false, vNULL, true, NULL, NULL); for (e = master_clone->callees; e; e = e->next_callee) if (!e->inline_failed) clone_inlined_nodes (e, true, false, NULL, CGRAPH_FREQ_BASE); |