https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95230
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |enhancement --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I think the problem is: 1 & (1 << I) != 0 is not being transformed to I == 0 if I had the range of (0..31) Once that happens, we could split the loop into I != 0 (1..31) and I == 0 cases and the I != 0 case becomes empty. Etc.