diff options
author | Jan Hubicka <jh@suse.cz> | 2010-05-27 04:07:01 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2010-05-27 02:07:01 +0000 |
commit | e466e2ceb9d8fdb7a6bc1463288a3fc6d98bbcc1 (patch) | |
tree | fda3a71a120f0aa875aaa5fd29137598b8654835 /gcc/ipa-inline.c | |
parent | fc7e91eb97a4ffbf4f48adc89b6c6e70f28c74dc (diff) | |
download | gcc-e466e2ceb9d8fdb7a6bc1463288a3fc6d98bbcc1.zip gcc-e466e2ceb9d8fdb7a6bc1463288a3fc6d98bbcc1.tar.gz gcc-e466e2ceb9d8fdb7a6bc1463288a3fc6d98bbcc1.tar.bz2 |
cgraphunit.c (verify_cgraph_node): Do checking that DECL match edge only when checking is enabled...
* cgraphunit.c (verify_cgraph_node): Do checking that DECL match
edge only when checking is enabled; check using former_clone_of;
check inline clones too.
(cgraph_materialize_clone): Record former_clone_of pointer.
(cgraph_redirect_edge_call_stmt_to_callee): Assert that we are not
combining redirections; dump args_to_skip bitmap
(cgraph_materialize_all_clones): Do no redirection here.
* ipa-inline.c (inline_transform): Do redirection here.
* cgraph.h (struct cgraph_node): Add former_clone_of filed (enabled
cheking only).
From-SVN: r159907
Diffstat (limited to 'gcc/ipa-inline.c')
-rw-r--r-- | gcc/ipa-inline.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 38a9c56..d5f48bd 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -2035,6 +2035,7 @@ inline_transform (struct cgraph_node *node) { unsigned int todo = 0; struct cgraph_edge *e; + bool inline_p = false; /* FIXME: Currently the passmanager is adding inline transform more than once to some clones. This needs revisiting after WPA cleanups. */ @@ -2047,10 +2048,13 @@ inline_transform (struct cgraph_node *node) save_inline_function_body (node); for (e = node->callees; e; e = e->next_callee) - if (!e->inline_failed || warn_inline) - break; + { + cgraph_redirect_edge_call_stmt_to_callee (e); + if (!e->inline_failed || warn_inline) + inline_p = true; + } - if (e) + if (inline_p) { timevar_push (TV_INTEGRATION); todo = optimize_inline_calls (current_function_decl); |