aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-inline.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2010-05-27 04:07:01 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2010-05-27 02:07:01 +0000
commite466e2ceb9d8fdb7a6bc1463288a3fc6d98bbcc1 (patch)
treefda3a71a120f0aa875aaa5fd29137598b8654835 /gcc/ipa-inline.c
parentfc7e91eb97a4ffbf4f48adc89b6c6e70f28c74dc (diff)
downloadgcc-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.c10
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);