Patch from Bill Moyer.

* loop.c (basic_induction_var): Added test preventing
        CCmode parameter passed to convert_modes().

From-SVN: r19779
This commit is contained in:
Bill Moyer 1998-05-15 17:37:51 +00:00 committed by Jim Wilson
parent b24f65cddd
commit 829002bbab
2 changed files with 11 additions and 1 deletions

View File

@ -1,3 +1,8 @@
Fri May 15 17:36:11 1998 Bill Moyer <ttk@cygnus.com>
* loop.c (basic_induction_var): Added test preventing
CCmode parameter passed to convert_modes().
Fri May 15 17:26:18 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
* expr.c (expand_expr, case EXPR_WITH_FILE_LOCATION): Save/restore

View File

@ -5257,7 +5257,12 @@ basic_induction_var (x, mode, dest_reg, p, inc_val, mult_val)
case CONST_INT:
case SYMBOL_REF:
case CONST:
if (loops_enclosed == 1)
/* convert_modes aborts if we try to convert to or from CCmode, so just
exclude that case. It is very unlikely that a condition code value
would be a useful iterator anyways. */
if (loops_enclosed == 1
&& GET_MODE_CLASS (mode) != MODE_CC
&& GET_MODE_CLASS (GET_MODE (dest_reg)) != MODE_CC)
{
/* Possible bug here? Perhaps we don't know the mode of X. */
*inc_val = convert_modes (GET_MODE (dest_reg), mode, x, 0);