diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2017-05-23 12:59:35 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2017-05-23 10:59:35 +0000 |
commit | 0bceb671062a463aadcf0059e19308845d713838 (patch) | |
tree | 425d7dbe0a550b23ed410622c3ab724602dd8077 /gcc/cgraphunit.c | |
parent | 9d029ddfdadd3a469a8069ff498a29df8cdb5393 (diff) | |
download | gcc-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.c | 14 |
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 (); |