aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-cp.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2017-05-04 15:57:35 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2017-05-04 13:57:35 +0000
commit26f1a658e6308da5a7b804391c624acc3b1bee74 (patch)
tree4dab4f19629014b0e1a03b4b402d4da8ae4749e1 /gcc/ipa-cp.c
parent4d147bca3f0f1fadac32d4306a654e975b364341 (diff)
downloadgcc-26f1a658e6308da5a7b804391c624acc3b1bee74.zip
gcc-26f1a658e6308da5a7b804391c624acc3b1bee74.tar.gz
gcc-26f1a658e6308da5a7b804391c624acc3b1bee74.tar.bz2
ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter; update use of estimate_ipcp_clone_size_and_time.
* ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter; update use of estimate_ipcp_clone_size_and_time. (estimate_local_effects): Update use of estimate_ipcp_clone_size_and_time and perform_estimation_of_a_value. * ipa-inline.h (estimate_ipcp_clone_size_and_time): Update prototype. * ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time): Return nonspecialized time. * gcc.dg/ipa/ipcp-2.c: Decrease ipcp threshold * gcc.dg/tree-ssa/ipa-cp-1.c: Likewise. From-SVN: r247597
Diffstat (limited to 'gcc/ipa-cp.c')
-rw-r--r--gcc/ipa-cp.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 0b2cd63..5e1d94c 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -2792,16 +2792,16 @@ static void
perform_estimation_of_a_value (cgraph_node *node, vec<tree> known_csts,
vec<ipa_polymorphic_call_context> known_contexts,
vec<ipa_agg_jump_function_p> known_aggs_ptrs,
- sreal base_time, int removable_params_cost,
+ int removable_params_cost,
int est_move_cost, ipcp_value_base *val)
{
int size, time_benefit;
- sreal time;
+ sreal time, base_time;
inline_hints hints;
estimate_ipcp_clone_size_and_time (node, known_csts, known_contexts,
known_aggs_ptrs, &size, &time,
- &hints);
+ &base_time, &hints);
base_time -= time;
if (base_time > 65535)
base_time = 65535;
@@ -2836,15 +2836,14 @@ estimate_local_effects (struct cgraph_node *node)
vec<ipa_agg_jump_function> known_aggs;
vec<ipa_agg_jump_function_p> known_aggs_ptrs;
bool always_const;
- sreal base_time = inline_summaries->get (node)->time.to_int ();
int removable_params_cost;
if (!count || !ipcp_versionable_function_p (node))
return;
if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "\nEstimating effects for %s/%i, base_time: %f.\n",
- node->name (), node->order, base_time.to_double ());
+ fprintf (dump_file, "\nEstimating effects for %s/%i.\n",
+ node->name (), node->order);
always_const = gather_context_independent_values (info, &known_csts,
&known_contexts, &known_aggs,
@@ -2857,14 +2856,15 @@ estimate_local_effects (struct cgraph_node *node)
{
struct caller_statistics stats;
inline_hints hints;
- sreal time;
+ sreal time, base_time;
int size;
init_caller_stats (&stats);
node->call_for_symbol_thunks_and_aliases (gather_caller_stats, &stats,
false);
estimate_ipcp_clone_size_and_time (node, known_csts, known_contexts,
- known_aggs_ptrs, &size, &time, &hints);
+ known_aggs_ptrs, &size, &time,
+ &base_time, &hints);
time -= devirt_bonus;
time -= hint_time_bonus (hints);
time -= removable_params_cost;
@@ -2877,20 +2877,20 @@ estimate_local_effects (struct cgraph_node *node)
if (size <= 0 || node->local.local)
{
info->do_clone_for_all_contexts = true;
- base_time = time;
if (dump_file)
fprintf (dump_file, " Decided to specialize for all "
"known contexts, code not going to grow.\n");
}
- else if (good_cloning_opportunity_p (node, (base_time - time).to_int (),
+ else if (good_cloning_opportunity_p (node,
+ MAX ((base_time - time).to_int (),
+ 65536),
stats.freq_sum, stats.count_sum,
size))
{
if (size + overall_size <= max_new_size)
{
info->do_clone_for_all_contexts = true;
- base_time = time;
overall_size += size;
if (dump_file)
@@ -2926,7 +2926,7 @@ estimate_local_effects (struct cgraph_node *node)
int emc = estimate_move_cost (TREE_TYPE (val->value), true);
perform_estimation_of_a_value (node, known_csts, known_contexts,
- known_aggs_ptrs, base_time,
+ known_aggs_ptrs,
removable_params_cost, emc, val);
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -2961,7 +2961,7 @@ estimate_local_effects (struct cgraph_node *node)
{
known_contexts[i] = val->value;
perform_estimation_of_a_value (node, known_csts, known_contexts,
- known_aggs_ptrs, base_time,
+ known_aggs_ptrs,
removable_params_cost, 0, val);
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -3005,7 +3005,7 @@ estimate_local_effects (struct cgraph_node *node)
vec_safe_push (ajf->items, item);
perform_estimation_of_a_value (node, known_csts, known_contexts,
- known_aggs_ptrs, base_time,
+ known_aggs_ptrs,
removable_params_cost, 0, val);
if (dump_file && (dump_flags & TDF_DETAILS))