tree-ssa-loop-ivopts.c (add_candidate): Remove call to add_autoinc_candidates.

* tree-ssa-loop-ivopts.c (add_candidate): Remove call to
	add_autoinc_candidates.
	(add_iv_candidate_for_biv): Rename to add_iv_candidate_for_biv.
	(add_iv_candidate_for_biv): Rename from add_iv_candidate_for_biv.
	(add_old_ivs_candidates): Rename to add_iv_candidate_for_bivs.
	(add_iv_candidate_for_bivs): Rename from add_old_ivs_candidates.
	Call new function.
	(add_iv_value_candidates): Rename to add_iv_candidate_for_use.
	(add_iv_candidate_for_use): Rename from add_iv_value_candidates.
	Remove parameter struct iv*.  Call add_autoinc_candidates here.
	(add_derived_ivs_candidates): Rename to add_iv_candidate_for_uses.
	(add_iv_candidate_for_uses): Rename from add_derived_ivs_candidates.
	Call new function.
	(find_iv_candidates): Call new functions.

From-SVN: r225859
This commit is contained in:
Bin Cheng 2015-07-16 05:49:47 +00:00 committed by Bin Cheng
parent a6885f12c7
commit 4c3b378b5a
2 changed files with 37 additions and 18 deletions

View File

@ -1,3 +1,20 @@
2015-07-16 Bin Cheng <bin.cheng@arm.com>
* tree-ssa-loop-ivopts.c (add_candidate): Remove call to
add_autoinc_candidates.
(add_iv_candidate_for_biv): Rename to add_iv_candidate_for_biv.
(add_iv_candidate_for_biv): Rename from add_iv_candidate_for_biv.
(add_old_ivs_candidates): Rename to add_iv_candidate_for_bivs.
(add_iv_candidate_for_bivs): Rename from add_old_ivs_candidates.
Call new function.
(add_iv_value_candidates): Rename to add_iv_candidate_for_use.
(add_iv_candidate_for_use): Rename from add_iv_value_candidates.
Remove parameter struct iv*. Call add_autoinc_candidates here.
(add_derived_ivs_candidates): Rename to add_iv_candidate_for_uses.
(add_iv_candidate_for_uses): Rename from add_derived_ivs_candidates.
Call new function.
(find_iv_candidates): Call new functions.
2015-07-16 Sandra Loosemore <sandra@codesourcery.com>
* config/nios2/nios2.c (nios2_emit_stack_limit_check): Fix

View File

@ -2788,7 +2788,8 @@ add_autoinc_candidates (struct ivopts_data *data, tree base, tree step,
/* Adds a candidate BASE + STEP * i. Important field is set to IMPORTANT and
position to POS. If USE is not NULL, the candidate is set as related to
it. The candidate computation is scheduled on all available positions. */
it. The candidate computation is scheduled before exit condition and at
the end of loop. */
static void
add_candidate (struct ivopts_data *data,
@ -2801,9 +2802,6 @@ add_candidate (struct ivopts_data *data,
if (ip_end_pos (data->current_loop)
&& allow_ip_end_pos_p (data->current_loop))
add_candidate_1 (data, base, step, important, IP_END, use, NULL);
if (use != NULL && use->type == USE_ADDRESS)
add_autoinc_candidates (data, base, step, important, use);
}
/* Adds standard iv candidates. */
@ -2832,7 +2830,7 @@ add_standard_iv_candidates (struct ivopts_data *data)
/* Adds candidates bases on the old induction variable IV. */
static void
add_old_iv_candidates (struct ivopts_data *data, struct iv *iv)
add_iv_candidate_for_biv (struct ivopts_data *data, struct iv *iv)
{
gimple phi;
tree def;
@ -2872,7 +2870,7 @@ add_old_iv_candidates (struct ivopts_data *data, struct iv *iv)
/* Adds candidates based on the old induction variables. */
static void
add_old_ivs_candidates (struct ivopts_data *data)
add_iv_candidate_for_bivs (struct ivopts_data *data)
{
unsigned i;
struct iv *iv;
@ -2882,19 +2880,19 @@ add_old_ivs_candidates (struct ivopts_data *data)
{
iv = ver_info (data, i)->iv;
if (iv && iv->biv_p && !integer_zerop (iv->step))
add_old_iv_candidates (data, iv);
add_iv_candidate_for_biv (data, iv);
}
}
/* Adds candidates based on the value of the induction variable IV and USE. */
/* Adds candidates based on the value of USE's iv. */
static void
add_iv_value_candidates (struct ivopts_data *data,
struct iv *iv, struct iv_use *use)
add_iv_candidate_for_use (struct ivopts_data *data, struct iv_use *use)
{
unsigned HOST_WIDE_INT offset;
tree base;
tree basetype;
struct iv *iv = use->iv;
add_candidate (data, iv->base, iv->step, false, use);
@ -2904,21 +2902,25 @@ add_iv_value_candidates (struct ivopts_data *data,
basetype = TREE_TYPE (iv->base);
if (POINTER_TYPE_P (basetype))
basetype = sizetype;
add_candidate (data, build_int_cst (basetype, 0),
iv->step, true, use);
add_candidate (data, build_int_cst (basetype, 0), iv->step, true, use);
/* Third, try removing the constant offset. Make sure to even
add a candidate for &a[0] vs. (T *)&a. */
base = strip_offset (iv->base, &offset);
if (offset
|| base != iv->base)
if (offset || base != iv->base)
add_candidate (data, base, iv->step, false, use);
/* At last, add auto-incremental candidates. Make such variables
important since other iv uses with same base object may be based
on it. */
if (use != NULL && use->type == USE_ADDRESS)
add_autoinc_candidates (data, iv->base, iv->step, true, use);
}
/* Adds candidates based on the uses. */
static void
add_derived_ivs_candidates (struct ivopts_data *data)
add_iv_candidate_for_uses (struct ivopts_data *data)
{
unsigned i;
@ -2935,7 +2937,7 @@ add_derived_ivs_candidates (struct ivopts_data *data)
case USE_COMPARE:
case USE_ADDRESS:
/* Just add the ivs based on the value of the iv used here. */
add_iv_value_candidates (data, use->iv, use);
add_iv_candidate_for_use (data, use);
break;
default:
@ -5320,10 +5322,10 @@ find_iv_candidates (struct ivopts_data *data)
add_standard_iv_candidates (data);
/* Add old induction variables. */
add_old_ivs_candidates (data);
add_iv_candidate_for_bivs (data);
/* Add induction variables derived from uses. */
add_derived_ivs_candidates (data);
add_iv_candidate_for_uses (data);
set_autoinc_for_original_candidates (data);