diff options
author | peter <peter@FreeBSD.org> | 1996-09-18 05:45:16 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1996-09-18 05:45:16 +0000 |
commit | 7438a7f7a8a831d67d05e34b842fef1eebea33b1 (patch) | |
tree | b06eeb3521e16f208626dc321bbc10200b9a7955 /contrib/gcc/loop.c | |
parent | 120a6a0c72cde257e4ce6b0c036d881e1107c217 (diff) | |
parent | acb2bcd1679fc89c82b1ebd30a92fe0538b7f4dc (diff) | |
download | FreeBSD-src-7438a7f7a8a831d67d05e34b842fef1eebea33b1.zip FreeBSD-src-7438a7f7a8a831d67d05e34b842fef1eebea33b1.tar.gz |
This commit was generated by cvs2svn to compensate for changes in r18336,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/gcc/loop.c')
-rw-r--r-- | contrib/gcc/loop.c | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/contrib/gcc/loop.c b/contrib/gcc/loop.c index 8711cc0..338f968 100644 --- a/contrib/gcc/loop.c +++ b/contrib/gcc/loop.c @@ -6041,13 +6041,16 @@ maybe_eliminate_biv_1 (x, insn, bl, eliminate_p, where) { /* Can replace with any giv that was reduced and that has (MULT_VAL != 0) and (ADD_VAL == 0). - Require a constant for MULT_VAL, so we know it's nonzero. */ + Require a constant for MULT_VAL, so we know it's nonzero. + ??? We disable this optimization to avoid potential + overflows. */ for (v = bl->giv; v; v = v->next_iv) if (CONSTANT_P (v->mult_val) && v->mult_val != const0_rtx && v->add_val == const0_rtx && ! v->ignore && ! v->maybe_dead && v->always_computable - && v->mode == mode) + && v->mode == mode + && 0) { if (! eliminate_p) return 1; @@ -6067,12 +6070,19 @@ maybe_eliminate_biv_1 (x, insn, bl, eliminate_p, where) /* Look for a giv with (MULT_VAL != 0) and (ADD_VAL != 0); replace test insn with a compare insn (cmp REDUCED_GIV ADD_VAL). - Require a constant for MULT_VAL, so we know it's nonzero. */ + Require a constant for MULT_VAL, so we know it's nonzero. + ??? Do this only if ADD_VAL is a pointer to avoid a potential + overflow problem. */ for (v = bl->giv; v; v = v->next_iv) if (CONSTANT_P (v->mult_val) && v->mult_val != const0_rtx && ! v->ignore && ! v->maybe_dead && v->always_computable - && v->mode == mode) + && v->mode == mode + && (GET_CODE (v->add_val) == SYMBOL_REF + || GET_CODE (v->add_val) == LABEL_REF + || GET_CODE (v->add_val) == CONST + || (GET_CODE (v->add_val) == REG + && REGNO_POINTER_FLAG (REGNO (v->add_val))))) { if (! eliminate_p) return 1; @@ -6127,7 +6137,11 @@ maybe_eliminate_biv_1 (x, insn, bl, eliminate_p, where) for (v = bl->giv; v; v = v->next_iv) if (CONSTANT_P (v->mult_val) && INTVAL (v->mult_val) > 0 - && CONSTANT_P (v->add_val) + && (GET_CODE (v->add_val) == SYMBOL_REF + || GET_CODE (v->add_val) == LABEL_REF + || GET_CODE (v->add_val) == CONST + || (GET_CODE (v->add_val) == REG + && REGNO_POINTER_FLAG (REGNO (v->add_val)))) && ! v->ignore && ! v->maybe_dead && v->always_computable && v->mode == mode) { @@ -6160,12 +6174,14 @@ maybe_eliminate_biv_1 (x, insn, bl, eliminate_p, where) } /* Look for giv with positive constant mult_val and nonconst add_val. - Insert insns to calculate new compare value. */ + Insert insns to calculate new compare value. + ??? 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 && ! v->ignore && ! v->maybe_dead && v->always_computable - && v->mode == mode) + && v->mode == mode + && 0) { rtx tem; @@ -6191,12 +6207,14 @@ maybe_eliminate_biv_1 (x, insn, bl, eliminate_p, where) if (invariant_p (arg) == 1) { /* Look for giv with constant positive mult_val and nonconst - add_val. Insert insns to compute new compare value. */ + add_val. Insert insns to compute new compare value. + ??? 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 && ! v->ignore && ! v->maybe_dead && v->always_computable - && v->mode == mode) + && v->mode == mode + && 0) { rtx tem; |