https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85822
--- Comment #4 from rguenther at suse dot de <rguenther at suse dot de> --- On Thu, 17 May 2018, tetra2005 at gmail dot com wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85822 > > --- Comment #3 from Yuri Gribov <tetra2005 at gmail dot com> --- > It seems these lines in is_masked_range_test should be removed: > if (wi::neg_p (val, TYPE_SIGN (type))) > std::swap (*low, *high); > Sadly there were no tests which tested negative constants. I'll bootstrap and > send patch tomorrow (hope there's no urgency?). Well, iff then you should replace the above with if (wi::neg_p (val, TYPE_SIGN (type))) return false; (possibly earlier as soon as val is computed). At least w/o more exhaustive test coverage or explanation.