diff options
author | Christian Bruel <chrbr@gcc.gnu.org> | 2011-06-21 08:42:05 +0200 |
---|---|---|
committer | Christian Bruel <chrbr@gcc.gnu.org> | 2011-06-21 08:42:05 +0200 |
commit | c9fc06dcdd6568fa4a54d10408098ec51d07234f (patch) | |
tree | 8dd93dc6abd84a32b62b4e2bfae943c2c673d753 /gcc/ipa-inline-transform.c | |
parent | f1ee724ceb567af3f1343ceac6d87a69abc9c800 (diff) | |
download | gcc-c9fc06dcdd6568fa4a54d10408098ec51d07234f.zip gcc-c9fc06dcdd6568fa4a54d10408098ec51d07234f.tar.gz gcc-c9fc06dcdd6568fa4a54d10408098ec51d07234f.tar.bz2 |
PR middle-end/49139 fix always_inline diagnostics
From-SVN: r175239
Diffstat (limited to 'gcc/ipa-inline-transform.c')
-rw-r--r-- | gcc/ipa-inline-transform.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/gcc/ipa-inline-transform.c b/gcc/ipa-inline-transform.c index 2e13754..39c0138 100644 --- a/gcc/ipa-inline-transform.c +++ b/gcc/ipa-inline-transform.c @@ -348,8 +348,7 @@ inline_transform (struct cgraph_node *node) { unsigned int todo = 0; struct cgraph_edge *e; - bool inline_p = false; - + /* FIXME: Currently the pass manager is adding inline transform more than once to some clones. This needs revisiting after WPA cleanups. */ if (cfun->after_inlining) @@ -361,20 +360,17 @@ inline_transform (struct cgraph_node *node) save_inline_function_body (node); for (e = node->callees; e; e = e->next_callee) + cgraph_redirect_edge_call_stmt_to_callee (e); + + timevar_push (TV_INTEGRATION); + if (node->callees) { - cgraph_redirect_edge_call_stmt_to_callee (e); - if (!e->inline_failed || warn_inline) - inline_p = true; /* Redirecting edges might lead to a need for vops to be recomputed. */ todo |= TODO_update_ssa_only_virtuals; - } - - if (inline_p) - { - timevar_push (TV_INTEGRATION); todo = optimize_inline_calls (current_function_decl); - timevar_pop (TV_INTEGRATION); } + timevar_pop (TV_INTEGRATION); + cfun->always_inline_functions_inlined = true; cfun->after_inlining = true; return todo | execute_fixup_cfg (); |