loop.c (maybe_eliminate_biv_1): Use GET_CODE (x) == CONST_INT instead of CONSTANT_P for mult_val...

* loop.c (maybe_eliminate_biv_1): Use GET_CODE (x) == CONST_INT instead
	of CONSTANT_P for mult_val; always use validate_change to update insn.

From-SVN: r33353
This commit is contained in:
Jan Hubicka 2000-04-23 12:28:50 +00:00 committed by Jan Hubicka
parent e0add67ff0
commit 3508c681cd
2 changed files with 26 additions and 20 deletions

View file

@ -1,3 +1,8 @@
Sun Apr 23 14:27:44 MET DST 2000 Jan Hubicka <jh@suse.cz>
* loop.c (maybe_eliminate_biv_1): Use GET_CODE (x) == CONST_INT instead
of CONSTANT_P for mult_val; always use validate_change to update insn.
2000-04-22 Zack Weinberg <zack@wolery.cumb.org>
* cpphash.c (trad_stringify, add_pat): New functions.

View file

@ -8529,7 +8529,7 @@ maybe_eliminate_biv_1 (loop, x, insn, bl, eliminate_p, where)
overflows. */
for (v = bl->giv; v; v = v->next_iv)
if (CONSTANT_P (v->mult_val) && v->mult_val != const0_rtx
if (GET_CODE (v->mult_val) == CONST_INT && v->mult_val != const0_rtx
&& v->add_val == const0_rtx
&& ! v->ignore && ! v->maybe_dead && v->always_computable
&& v->mode == mode
@ -8561,7 +8561,7 @@ maybe_eliminate_biv_1 (loop, x, insn, bl, eliminate_p, where)
overflow problem. */
for (v = bl->giv; v; v = v->next_iv)
if (CONSTANT_P (v->mult_val) && v->mult_val != const0_rtx
if (GET_CODE (v->mult_val) == CONST_INT && v->mult_val != const0_rtx
&& ! v->ignore && ! v->maybe_dead && v->always_computable
&& v->mode == mode
&& (GET_CODE (v->add_val) == SYMBOL_REF
@ -8626,7 +8626,7 @@ maybe_eliminate_biv_1 (loop, x, insn, bl, eliminate_p, where)
negative mult_val, but it seems complex to do it in general. */
for (v = bl->giv; v; v = v->next_iv)
if (CONSTANT_P (v->mult_val) && INTVAL (v->mult_val) > 0
if (GET_CODE (v->mult_val) == CONST_INT && INTVAL (v->mult_val) > 0
&& (GET_CODE (v->add_val) == SYMBOL_REF
|| GET_CODE (v->add_val) == LABEL_REF
|| GET_CODE (v->add_val) == CONST
@ -8642,28 +8642,29 @@ maybe_eliminate_biv_1 (loop, x, insn, bl, eliminate_p, where)
return 1;
/* Replace biv with the giv's reduced reg. */
XEXP (x, 1-arg_operand) = v->new_reg;
validate_change (insn, &XEXP (x, 1-arg_operand), v->new_reg, 1);
/* If all constants are actually constant integers and
the derived constant can be directly placed in the COMPARE,
do so. */
if (GET_CODE (arg) == CONST_INT
&& GET_CODE (v->mult_val) == CONST_INT
&& GET_CODE (v->add_val) == CONST_INT
&& validate_change (insn, &XEXP (x, arg_operand),
GEN_INT (INTVAL (arg)
* INTVAL (v->mult_val)
+ INTVAL (v->add_val)), 0))
&& GET_CODE (v->add_val) == CONST_INT)
{
validate_change (insn, &XEXP (x, arg_operand),
GEN_INT (INTVAL (arg)
* INTVAL (v->mult_val)
+ INTVAL (v->add_val)), 1);
}
else
{
/* Otherwise, load it into a register. */
tem = gen_reg_rtx (mode);
emit_iv_add_mult (arg, v->mult_val, v->add_val, tem, where);
validate_change (insn, &XEXP (x, arg_operand), tem, 1);
}
if (apply_change_group ())
return 1;
/* Otherwise, load it into a register. */
tem = gen_reg_rtx (mode);
emit_iv_add_mult (arg, v->mult_val, v->add_val, tem, where);
if (validate_change (insn, &XEXP (x, arg_operand), tem, 0))
return 1;
/* If that failed, put back the change we made above. */
XEXP (x, 1-arg_operand) = reg;
}
/* Look for giv with positive constant mult_val and nonconst add_val.
@ -8671,7 +8672,7 @@ maybe_eliminate_biv_1 (loop, x, insn, bl, eliminate_p, where)
??? Turn this off due to possible overflow. */
for (v = bl->giv; v; v = v->next_iv)
if (CONSTANT_P (v->mult_val) && INTVAL (v->mult_val) > 0
if (GET_CODE (v->mult_val) == CONST_INT && INTVAL (v->mult_val) > 0
&& ! v->ignore && ! v->maybe_dead && v->always_computable
&& v->mode == mode
&& 0)
@ -8707,7 +8708,7 @@ maybe_eliminate_biv_1 (loop, x, insn, bl, eliminate_p, where)
??? Turn this off due to possible overflow. */
for (v = bl->giv; v; v = v->next_iv)
if (CONSTANT_P (v->mult_val) && INTVAL (v->mult_val) > 0
if (GET_CODE (v->mult_val) == CONST_INT && INTVAL (v->mult_val) > 0
&& ! v->ignore && ! v->maybe_dead && v->always_computable
&& v->mode == mode
&& 0)