Hi,
This patch simplifies function get_scaled_computation_cost_at and the dump
information.
Is it OK?
Thanks,
bin
2017-04-11 Bin Cheng <bin.ch...@arm.com>
* tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Delete
parameter cand. Update dump information.
(get_computation_cost): Update uses.
From e31e329139d5d37f0553904635097fac815ae6b4 Mon Sep 17 00:00:00 2001
From: Bin Cheng <binch...@e108451-lin.cambridge.arm.com>
Date: Wed, 1 Mar 2017 11:24:02 +0000
Subject: [PATCH 10/33] cost-scaling-dump-info-20170220.txt
---
gcc/tree-ssa-loop-ivopts.c | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index 4b6eda1..556bdc8 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -4783,12 +4783,11 @@ get_loop_invariant_expr (struct ivopts_data *data, tree
ubase,
}
/* Scale (multiply) the computed COST (except scratch part that should be
- hoisted out a loop) by header->frequency / AT->frequency,
- which makes expected cost more accurate. */
+ hoisted out a loop) by header->frequency / AT->frequency, which makes
+ expected cost more accurate. */
static comp_cost
-get_scaled_computation_cost_at (ivopts_data *data, gimple *at, iv_cand *cand,
- comp_cost cost)
+get_scaled_computation_cost_at (ivopts_data *data, gimple *at, comp_cost cost)
{
int loop_freq = data->current_loop->header->frequency;
int bb_freq = gimple_bb (at)->frequency;
@@ -4799,9 +4798,9 @@ get_scaled_computation_cost_at (ivopts_data *data, gimple
*at, iv_cand *cand,
= cost.scratch + (cost.cost - cost.scratch) * bb_freq / loop_freq;
if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "Scaling iv_use based on cand %d "
+ fprintf (dump_file, "Scaling cost based on bb prob "
"by %2.2f: %d (scratch: %d) -> %d (%d/%d)\n",
- cand->id, 1.0f * bb_freq / loop_freq, cost.cost,
+ 1.0f * bb_freq / loop_freq, cost.cost,
cost.scratch, scaled_cost, bb_freq, loop_freq);
cost.cost = scaled_cost;
@@ -4997,7 +4996,7 @@ get_computation_cost (struct ivopts_data *data, struct
iv_use *use,
mem_mode,
TYPE_ADDR_SPACE (TREE_TYPE (utype)),
speed, stmt_is_after_inc, can_autoinc);
- return get_scaled_computation_cost_at (data, at, cand, cost);
+ return get_scaled_computation_cost_at (data, at, cost);
}
/* Otherwise estimate the costs for computing the expression. */
@@ -5005,7 +5004,7 @@ get_computation_cost (struct ivopts_data *data, struct
iv_use *use,
{
if (ratio != 1)
cost += mult_by_coeff_cost (ratio, TYPE_MODE (ctype), speed);
- return get_scaled_computation_cost_at (data, at, cand, cost);
+ return get_scaled_computation_cost_at (data, at, cost);
}
/* Symbol + offset should be compile-time computable so consider that they
@@ -5025,7 +5024,7 @@ get_computation_cost (struct ivopts_data *data, struct
iv_use *use,
if (aratio != 1)
cost += mult_by_coeff_cost (aratio, TYPE_MODE (ctype), speed);
- return get_scaled_computation_cost_at (data, at, cand, cost);
+ return get_scaled_computation_cost_at (data, at, cost);
fallback:
if (can_autoinc)
@@ -5042,7 +5041,7 @@ fallback:
cost = comp_cost (computation_cost (comp, speed), 0);
- return get_scaled_computation_cost_at (data, at, cand, cost);
+ return get_scaled_computation_cost_at (data, at, cost);
}
/* Determines cost of computing the use in GROUP with CAND in a generic
--
1.9.1