From 3508c681cdd351259d8a1b6f8ed4e472b27bafb9 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Sun, 23 Apr 2000 12:28:50 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/loop.c | 41 +++++++++++++++++++++-------------------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 28db7bafdb5..6fe6d37877c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Sun Apr 23 14:27:44 MET DST 2000 Jan Hubicka + + * 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 * cpphash.c (trad_stringify, add_pat): New functions. diff --git a/gcc/loop.c b/gcc/loop.c index db0f82f8ddb..e2adbd50f09 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -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)