diff options
author | Jan Hubicka <jh@suse.cz> | 2000-04-23 12:28:50 +0000 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2000-04-23 12:28:50 +0000 |
commit | 3508c681cdd351259d8a1b6f8ed4e472b27bafb9 (patch) | |
tree | b4cb713d9c27cb66aed3775a3ac8116d7487cd8b /gcc | |
parent | e0add67ff04f88ea5d6139423db7b0b9ab14545c (diff) | |
download | gcc-3508c681cdd351259d8a1b6f8ed4e472b27bafb9.zip gcc-3508c681cdd351259d8a1b6f8ed4e472b27bafb9.tar.gz gcc-3508c681cdd351259d8a1b6f8ed4e472b27bafb9.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/loop.c | 41 |
2 files changed, 26 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 28db7ba..6fe6d37 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. @@ -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)) - 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)) + && 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; - - /* 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) |