From e466e2ceb9d8fdb7a6bc1463288a3fc6d98bbcc1 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Thu, 27 May 2010 04:07:01 +0200 Subject: 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 --- gcc/ipa-inline.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'gcc/ipa-inline.c') 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); -- cgit v1.1