Kenneth Zadeck <zad...@naturalbridge.com> writes: > diff --git a/gcc/combine.c b/gcc/combine.c > index 4e0a579..b531305 100644 > --- a/gcc/combine.c > +++ b/gcc/combine.c > @@ -2617,16 +2617,19 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int > *new_direct_jump_p, > constant. */ > if (i1 == 0 > && (temp = single_set (i2)) != 0 > - && (CONST_INT_P (SET_SRC (temp)) > - || CONST_DOUBLE_AS_INT_P (SET_SRC (temp))) > + && CONST_SCALAR_INT_P (SET_SRC (temp)) > && GET_CODE (PATTERN (i3)) == SET > - && (CONST_INT_P (SET_SRC (PATTERN (i3))) > - || CONST_DOUBLE_AS_INT_P (SET_SRC (PATTERN (i3)))) > + && CONST_SCALAR_INT_P (SET_SRC (PATTERN (i3))) > && reg_subword_p (SET_DEST (PATTERN (i3)), SET_DEST (temp))) > { > rtx dest = SET_DEST (PATTERN (i3)); > int offset = -1; > int width = 0; > + > + /* There are not explicit tests to make sure that this is not a > + float, but there is code here that would not be correct if it > + was. */ > + gcc_assert (GET_MODE_CLASS (GET_MODE (SET_SRC (temp))) != MODE_FLOAT);
No need for this assert: CONST_SCALAR_INT_P (SET_SRC (temp)) should cover it. > @@ -1009,9 +1007,7 @@ rtx_equal_for_cselib_1 (rtx x, rtx y, enum machine_mode > memmode) > static rtx > wrap_constant (enum machine_mode mode, rtx x) > { > - if (!CONST_INT_P (x) > - && GET_CODE (x) != CONST_FIXED > - && !CONST_DOUBLE_AS_INT_P (x)) > + if ((!CONST_SCALAR_INT_P (x)) && GET_CODE (x) != CONST_FIXED) Redundant brackets. Looks good to me otherwise, thanks. Richard