tree-ssa-loop-ivopts.c (iv_ca_add_use): Delete parameter important_candidates.
* tree-ssa-loop-ivopts.c (iv_ca_add_use): Delete parameter important_candidates. Consider all important candidates if IVS doesn't give any result. Remove check on ivs->upto. (try_add_cand_for): Call iv_ca_add_use only once. From-SVN: r214674
This commit is contained in:
parent
8a2d2bf000
commit
f22ae1ecbd
2 changed files with 27 additions and 25 deletions
|
@ -1,3 +1,10 @@
|
|||
2014-08-28 Bin Cheng <bin.cheng@arm.com>
|
||||
|
||||
* tree-ssa-loop-ivopts.c (iv_ca_add_use): Delete parameter
|
||||
important_candidates. Consider all important candidates if
|
||||
IVS doesn't give any result. Remove check on ivs->upto.
|
||||
(try_add_cand_for): Call iv_ca_add_use only once.
|
||||
|
||||
2014-08-28 Alexander Ivchenko <alexander.ivchenko@intel.com>
|
||||
Maxim Kuznetsov <maxim.kuznetsov@intel.com>
|
||||
Anna Tikhonova <anna.tikhonova@intel.com>
|
||||
|
|
|
@ -5415,36 +5415,40 @@ iv_ca_set_cp (struct ivopts_data *data, struct iv_ca *ivs,
|
|||
}
|
||||
|
||||
/* Extend set IVS by expressing USE by some of the candidates in it
|
||||
if possible. All important candidates will be considered
|
||||
if IMPORTANT_CANDIDATES is true. */
|
||||
if possible. Consider all important candidates if candidates in
|
||||
set IVS don't give any result. */
|
||||
|
||||
static void
|
||||
iv_ca_add_use (struct ivopts_data *data, struct iv_ca *ivs,
|
||||
struct iv_use *use, bool important_candidates)
|
||||
struct iv_use *use)
|
||||
{
|
||||
struct cost_pair *best_cp = NULL, *cp;
|
||||
bitmap_iterator bi;
|
||||
bitmap cands;
|
||||
unsigned i;
|
||||
struct iv_cand *cand;
|
||||
|
||||
gcc_assert (ivs->upto >= use->id);
|
||||
ivs->upto++;
|
||||
ivs->bad_uses++;
|
||||
|
||||
if (ivs->upto == use->id)
|
||||
EXECUTE_IF_SET_IN_BITMAP (ivs->cands, 0, i, bi)
|
||||
{
|
||||
ivs->upto++;
|
||||
ivs->bad_uses++;
|
||||
}
|
||||
|
||||
cands = (important_candidates ? data->important_candidates : ivs->cands);
|
||||
EXECUTE_IF_SET_IN_BITMAP (cands, 0, i, bi)
|
||||
{
|
||||
struct iv_cand *cand = iv_cand (data, i);
|
||||
|
||||
cand = iv_cand (data, i);
|
||||
cp = get_use_iv_cost (data, use, cand);
|
||||
|
||||
if (cheaper_cost_pair (cp, best_cp))
|
||||
best_cp = cp;
|
||||
}
|
||||
|
||||
if (best_cp == NULL)
|
||||
{
|
||||
EXECUTE_IF_SET_IN_BITMAP (data->important_candidates, 0, i, bi)
|
||||
{
|
||||
cand = iv_cand (data, i);
|
||||
cp = get_use_iv_cost (data, use, cand);
|
||||
if (cheaper_cost_pair (cp, best_cp))
|
||||
best_cp = cp;
|
||||
}
|
||||
}
|
||||
|
||||
iv_ca_set_cp (data, ivs, use, best_cp);
|
||||
}
|
||||
|
@ -5878,18 +5882,9 @@ try_add_cand_for (struct ivopts_data *data, struct iv_ca *ivs,
|
|||
struct iv_ca_delta *best_delta = NULL, *act_delta;
|
||||
struct cost_pair *cp;
|
||||
|
||||
iv_ca_add_use (data, ivs, use, false);
|
||||
iv_ca_add_use (data, ivs, use);
|
||||
best_cost = iv_ca_cost (ivs);
|
||||
|
||||
cp = iv_ca_cand_for_use (ivs, use);
|
||||
if (!cp)
|
||||
{
|
||||
ivs->upto--;
|
||||
ivs->bad_uses--;
|
||||
iv_ca_add_use (data, ivs, use, true);
|
||||
best_cost = iv_ca_cost (ivs);
|
||||
cp = iv_ca_cand_for_use (ivs, use);
|
||||
}
|
||||
if (cp)
|
||||
{
|
||||
best_delta = iv_ca_delta_add (use, NULL, cp, NULL);
|
||||
|
|
Loading…
Add table
Reference in a new issue