diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2019-11-03 14:52:59 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2019-11-03 13:52:59 +0000 |
commit | 1532500ecbe8dbf59bef498e46b447b3a6b0fa65 (patch) | |
tree | f086db17aabe356ccc9facab8927901ed949d08d /gcc/ipa-inline-analysis.c | |
parent | a9a0fd0e2896e1f4987d4be7094e292f46532046 (diff) | |
download | gcc-1532500ecbe8dbf59bef498e46b447b3a6b0fa65.zip gcc-1532500ecbe8dbf59bef498e46b447b3a6b0fa65.tar.gz gcc-1532500ecbe8dbf59bef498e46b447b3a6b0fa65.tar.bz2 |
ipa-fnsummary.c (ipa_call_context): New constructor.
* ipa-fnsummary.c (ipa_call_context): New constructor.
(estimate_node_size_and_time): Turn to ...
(ipa_call_context::estimate_size_and_time): ... this one.
(ipa_call_context::release): New.
* ipa-fnsummary.h (ipa_call_context): New class.
(estimate_node_size_and_time): Remove.
* ipa-inline-analysis.c (do_estimate_edge_time, do_estimate_edge_size,
do_estimate_edge_hints): Update.
From-SVN: r277755
Diffstat (limited to 'gcc/ipa-inline-analysis.c')
-rw-r--r-- | gcc/ipa-inline-analysis.c | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c index fb3299d..5c00c0d 100644 --- a/gcc/ipa-inline-analysis.c +++ b/gcc/ipa-inline-analysis.c @@ -137,9 +137,10 @@ do_estimate_edge_time (struct cgraph_edge *edge) evaluate_properties_for_edge (edge, true, &clause, &nonspec_clause, &known_vals, &known_contexts, &known_aggs); - estimate_node_size_and_time (callee, clause, nonspec_clause, known_vals, - known_contexts, known_aggs, &size, &min_size, - &time, &nonspec_time, &hints, es->param); + ipa_call_context ctx (callee, clause, nonspec_clause, known_vals, + known_contexts, known_aggs, es->param); + ctx.estimate_size_and_time (&size, &min_size, + &time, &nonspec_time, &hints); /* When we have profile feedback, we can quite safely identify hot edges and for those we disable size limits. Don't do that when @@ -152,9 +153,7 @@ do_estimate_edge_time (struct cgraph_edge *edge) : edge->caller->count.ipa ()))) hints |= INLINE_HINT_known_hot; - known_vals.release (); - known_contexts.release (); - known_aggs.release (); + ctx.release (); gcc_checking_assert (size >= 0); gcc_checking_assert (time >= 0); @@ -207,12 +206,10 @@ do_estimate_edge_size (struct cgraph_edge *edge) &clause, &nonspec_clause, &known_vals, &known_contexts, &known_aggs); - estimate_node_size_and_time (callee, clause, nonspec_clause, known_vals, - known_contexts, known_aggs, &size, NULL, NULL, - NULL, NULL, vNULL); - known_vals.release (); - known_contexts.release (); - known_aggs.release (); + ipa_call_context ctx (callee, clause, nonspec_clause, known_vals, + known_contexts, known_aggs, vNULL); + ctx.estimate_size_and_time (&size, NULL, NULL, NULL, NULL); + ctx.release (); return size; } @@ -248,12 +245,10 @@ do_estimate_edge_hints (struct cgraph_edge *edge) &clause, &nonspec_clause, &known_vals, &known_contexts, &known_aggs); - estimate_node_size_and_time (callee, clause, nonspec_clause, known_vals, - known_contexts, known_aggs, NULL, NULL, - NULL, NULL, &hints, vNULL); - known_vals.release (); - known_contexts.release (); - known_aggs.release (); + ipa_call_context ctx (callee, clause, nonspec_clause, known_vals, + known_contexts, known_aggs, vNULL); + ctx.estimate_size_and_time (NULL, NULL, NULL, NULL, &hints); + ctx.release (); hints |= simple_edge_hints (edge); return hints; } |