https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110503
--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Looking into this again, we have: # RANGE [irange] int [0, 1] _11 = 1 % _10; Which is just `_10 != 1` But that does not fix the situtation fully. I guess for GCC 16, I will finish up my test_for_singularity patch.