https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106677
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Hmm, I don't know if this related to the original issue but in .optimized we have now: # RANGE [irange] unsigned char [0, 1] NONZERO 0x1 # SR.115_117 = PHI <_119(9), SR.115_121(7)> # RANGE [irange] unsigned char [0, 1] NONZERO 0x1 _119 = MAX_EXPR <1, SR.115_117>; But that Max is just 1 because the max range of SR.115_117 is 1. I don't know how that showed up in phiopt4 though. SR.115_117 != 0 ? SR.115_117 : 1 The code definitely looks worse in GCC 13 compared to GCC 12.