This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Fix PR39588, ICE in trunc_int_for_mode
On Tue, 31 Mar 2009, Eric Botcazou wrote:
> > A simple fix that works for all the shift combine simplifications is to skip
> > the truncation if the constant is zero.
> What about short-circuiting when the constant doesn't matter?
Yeah, that would have required that I understand that code ... ;)
> *pop0 = op0;
> /* ??? Slightly redundant with the above mask, but not entirely.
> Moving this above means we'd have to sign-extend the mode mask
> for the final test. */
> if (op0 != UNKNOWN && op0 != NEG)
> *pconst0 = trunc_int_for_mode (const0, mode);
> return 1;
> Same at the end of simplify_shift_const_1:
> if (outer_op != UNKNOWN)
> if (GET_RTX_CLASS (outer_op) != RTX_UNARY
> && GET_MODE_BITSIZE (result_mode) < HOST_BITS_PER_WIDE_INT)
> outer_const = trunc_int_for_mode (outer_const, result_mode);
Care to do a patch?