aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-inline-analysis.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2019-11-03 14:52:59 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2019-11-03 13:52:59 +0000
commit1532500ecbe8dbf59bef498e46b447b3a6b0fa65 (patch)
treef086db17aabe356ccc9facab8927901ed949d08d /gcc/ipa-inline-analysis.c
parenta9a0fd0e2896e1f4987d4be7094e292f46532046 (diff)
downloadgcc-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.c31
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;
}