aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-inline.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2017-05-19 10:52:26 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2017-05-19 08:52:26 +0000
commit263e19c786a411cfa647a460cb7a484046195e8c (patch)
treeb12d5c2d813ff45036f743653212bf86759e0d06 /gcc/ipa-inline.c
parent035ab82621cd702bb7fc566ca7ccbcb6a9567058 (diff)
downloadgcc-263e19c786a411cfa647a460cb7a484046195e8c.zip
gcc-263e19c786a411cfa647a460cb7a484046195e8c.tar.gz
gcc-263e19c786a411cfa647a460cb7a484046195e8c.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: r248262
Diffstat (limited to 'gcc/ipa-inline.c')
-rw-r--r--gcc/ipa-inline.c41
1 files changed, 18 insertions, 23 deletions
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index 7337e0a..0238de2 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -493,7 +493,7 @@ can_inline_edge_p (struct cgraph_edge *e, bool report,
> opt_for_fn (caller->decl, optimize)))
{
if (estimate_edge_time (e)
- >= 20 + inline_edge_summary (e)->call_stmt_time)
+ >= 20 + ipa_call_summaries->get (e)->call_stmt_time)
{
e->inline_failed = CIF_OPTIMIZATION_MISMATCH;
inlinable = false;
@@ -672,7 +672,7 @@ compute_inlined_call_time (struct cgraph_edge *edge,
/* This calculation should match one in ipa-inline-analysis.c
(estimate_edge_size_and_time). */
time -= (sreal) edge->frequency
- * inline_edge_summary (edge)->call_stmt_time / CGRAPH_FREQ_BASE;
+ * ipa_call_summaries->get (edge)->call_stmt_time / CGRAPH_FREQ_BASE;
time += caller_time;
if (time <= 0)
time = ((sreal) 1) >> 8;
@@ -722,16 +722,16 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report)
else if ((!DECL_DECLARED_INLINE_P (callee->decl)
&& (!e->count || !e->maybe_hot_p ()))
&& inline_summaries->get (callee)->min_size
- - inline_edge_summary (e)->call_stmt_size
- > MAX (MAX_INLINE_INSNS_SINGLE, MAX_INLINE_INSNS_AUTO))
+ - ipa_call_summaries->get (e)->call_stmt_size
+ > (unsigned)MAX (MAX_INLINE_INSNS_SINGLE, MAX_INLINE_INSNS_AUTO))
{
e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT;
want_inline = false;
}
else if ((DECL_DECLARED_INLINE_P (callee->decl) || e->count)
&& inline_summaries->get (callee)->min_size
- - inline_edge_summary (e)->call_stmt_size
- > 16 * MAX_INLINE_INSNS_SINGLE)
+ - ipa_call_summaries->get (e)->call_stmt_size
+ > (unsigned)16 * MAX_INLINE_INSNS_SINGLE)
{
e->inline_failed = (DECL_DECLARED_INLINE_P (callee->decl)
? CIF_MAX_INLINE_INSNS_SINGLE_LIMIT
@@ -1172,7 +1172,7 @@ edge_badness (struct cgraph_edge *edge, bool dump)
of functions fully inlined in program. */
else
{
- int nest = MIN (inline_edge_summary (edge)->loop_depth, 8);
+ int nest = MIN (ipa_call_summaries->get (edge)->loop_depth, 8);
badness = growth;
/* Decrease badness if call is nested. */
@@ -2691,14 +2691,11 @@ early_inliner (function *fun)
statements that don't have inline parameters computed. */
for (edge = node->callees; edge; edge = edge->next_callee)
{
- if (inline_edge_summary_vec.length () > (unsigned) edge->uid)
- {
- struct inline_edge_summary *es = inline_edge_summary (edge);
- es->call_stmt_size
- = estimate_num_insns (edge->call_stmt, &eni_size_weights);
- es->call_stmt_time
- = estimate_num_insns (edge->call_stmt, &eni_time_weights);
- }
+ struct ipa_call_summary *es = ipa_call_summaries->get (edge);
+ es->call_stmt_size
+ = estimate_num_insns (edge->call_stmt, &eni_size_weights);
+ es->call_stmt_time
+ = estimate_num_insns (edge->call_stmt, &eni_time_weights);
}
inline_update_overall_summary (node);
inlined = false;
@@ -2719,14 +2716,12 @@ early_inliner (function *fun)
for (edge = node->callees; edge; edge = edge->next_callee)
{
/* We have no summary for new bound store calls yet. */
- if (inline_edge_summary_vec.length () > (unsigned)edge->uid)
- {
- struct inline_edge_summary *es = inline_edge_summary (edge);
- es->call_stmt_size
- = estimate_num_insns (edge->call_stmt, &eni_size_weights);
- es->call_stmt_time
- = estimate_num_insns (edge->call_stmt, &eni_time_weights);
- }
+ struct ipa_call_summary *es = ipa_call_summaries->get (edge);
+ es->call_stmt_size
+ = estimate_num_insns (edge->call_stmt, &eni_size_weights);
+ es->call_stmt_time
+ = estimate_num_insns (edge->call_stmt, &eni_time_weights);
+
if (edge->callee->decl
&& !gimple_check_call_matching_types (
edge->call_stmt, edge->callee->decl, false))