https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110286
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- In this case we have: # RANGE [irange] short int [0, 1] NONZERO 0x1 # n_lsm.35_15 = PHI <_10(9), n_lsm.35_45(12)> ... # RANGE [irange] short int [0, 1] NONZERO 0x1 # n_lsm.35_45 = PHI <n_lsm.35_15(11), _69(D)(6)> # RANGE [irange] short int [0, 1] NONZERO 0x1 _10 = (short intD.17) _9; But the range of _69(D) is really undefined .... There is nothing phiopt/match is doing incorrectly due to the above, rather it is ranger that might be considering the wrong/incorrect information for uninitialized variables ...