aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraphunit.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2017-05-23 12:59:35 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2017-05-23 10:59:35 +0000
commit0bceb671062a463aadcf0059e19308845d713838 (patch)
tree425d7dbe0a550b23ed410622c3ab724602dd8077 /gcc/cgraphunit.c
parent9d029ddfdadd3a469a8069ff498a29df8cdb5393 (diff)
downloadgcc-0bceb671062a463aadcf0059e19308845d713838.zip
gcc-0bceb671062a463aadcf0059e19308845d713838.tar.gz
gcc-0bceb671062a463aadcf0059e19308845d713838.tar.bz2
ipa-inline-analysis.c (cgraph_2edge_hook_list, [...]): Remove.
* ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list, inline_edge_removal_hook, inline_edge_duplication_hook): Remove. (inline_edge_summary_vec): Turn into ... (ipa_call_summaries): ... this one. (redirect_to_unreachable, edge_set_predicate, evaluate_properties_for_edge, inline_summary_alloc, reset_ipa_call_summary, reset_inline_summary, inline_summary_t::duplicate): Update. (inline_edge_duplication_hook): Turn to ... (ipa_call_summary_t::duplicate): ... this one. (inline_edge_removal_hook): Turn to ... (ipa_call_summary_t::remove): ... this one. (dump_inline_edge_summary): Turn to ... (dump_ipa_call_summary): ... this one. (estimate_function_body_sizes): Update. (inline_update_callee_summaries): Update. (remap_edge_change_prob): Update. (remap_edge_summaries): Update. (inline_merge_summary): Update. (do_estimate_edge_time): Update. (inline_generate_summary): Update. (inline_read_section): Update. (inline_read_summary): Update. (inline_free_summary): Update. * ipa-inline.c (can_inline_edge_p): Update. (compute_inlined_call_time): Update. (want_inline_small_function_p): Update. (edge_badness): Update. (early_inliner): Update. * ipa-inline.h (inline_edge_summary): Turn to ... (ipa_call_summary): ... this one. (ipa_call_summary_t): New class. (inline_edge_summary_t, inline_edge_summary_vec): Remove. (ipa_call_summaries): New. (inline_edge_summary): Remove. (estimate_edge_growth): Update. * ipa-profile.c (ipa_propagate_frequency_1): Update. * ipa-prop.c (ipa_make_edge_direct_to_target): Update. * ipa-split.c (execute_split_functions): Update. * ipa.c (symbol_table::remove_unreachable_nodes): Update. From-SVN: r248365
Diffstat (limited to 'gcc/cgraphunit.c')
-rw-r--r--gcc/cgraphunit.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index f1484b0..c1f4293 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -332,9 +332,17 @@ symbol_table::process_new_functions (void)
push_cfun (DECL_STRUCT_FUNCTION (fndecl));
if ((state == IPA_SSA || state == IPA_SSA_AFTER_INLINING)
&& !gimple_in_ssa_p (DECL_STRUCT_FUNCTION (fndecl)))
- g->get_passes ()->execute_early_local_passes ();
- else if (inline_summaries != NULL)
- compute_inline_parameters (node, true);
+ {
+ bool summaried_computed = ipa_fn_summaries != NULL;
+ g->get_passes ()->execute_early_local_passes ();
+ /* Early passes compure inline parameters to do inlining
+ and splitting. This is redundant for functions added late.
+ Just throw away whatever it did. */
+ if (!summaried_computed)
+ inline_free_summary ();
+ }
+ else if (ipa_fn_summaries != NULL)
+ compute_fn_summary (node, true);
free_dominance_info (CDI_POST_DOMINATORS);
free_dominance_info (CDI_DOMINATORS);
pop_cfun ();