Hi!
On Wed, Oct 28, 2020 at 11:13:28AM +0000, Alex Coplan wrote:
> This fails bootstrap since we trigger -Wsign-compare without the cast to
> unsigned HOST_WIDE_INT on shift_amt:
>
> + else if (GET_CODE (inner) == MULT
> + && CONST_INT_P (XEXP (inner, 1))
> + && pos_rtx == 0 && pos == 0)
> + {
> + /* We're extracting the least significant bits of an rtx
> + (mult X (const_int 2^C)), where LEN > C. Extract the
> + least significant (LEN - C) bits of X, giving an rtx
> + whose mode is MODE, then multiply it by 2^C. */
> + const HOST_WIDE_INT shift_amt = exact_log2 (INTVAL (XEXP (inner, 1)));
> + if (shift_amt > 0 && len > (unsigned HOST_WIDE_INT) shift_amt)
if (IN_RANGE (shift_amt, 1, len - 1))
> + {
> + new_rtx = make_extraction (mode, XEXP (inner, 0),
> + 0, 0, len - shift_amt,
> + unsignedp, in_dest, in_compare);
> + if (new_rtx)
> + return gen_rtx_MULT (mode, new_rtx, XEXP (inner, 1));
> + }
> + }
> else if (GET_CODE (inner) == TRUNCATE
> /* If trying or potentionally trying to extract
> bits outside of is_mode, don't look through
Okay for trunk like that. Thanks!
Segher