https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85746

--- Comment #8 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> 
---
(In reply to Marc Glisse from comment #7)
> (In reply to Marc Glisse from comment #6)
> >              && xi.val[0] <= (HOST_WIDE_INT) ((unsigned HOST_WIDE_INT)
> >                                               HOST_WIDE_INT_MAX >> shift))
> 
> The issue occurs with xi.val[0] == -9223372036854775808 (lshift_large
> returns a result of length 2 for that). I don't know if the code mishandles
> this case, or if such a number is not supposed to exist in the first place,
> but that does seem like a bug.

Yeah, looks like this should have been an unsigned HOST_WIDE_INT comparison
instead, i.e. casting xi.val[0] rather than the shift result.

Reply via email to