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.