https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113227
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Yes `(a > 0) & (b > 0)` is not the same as `(a|b) > 0`. I think we already catch all of the related `(a CMP 0) &/| (b CMP 0)`; see PR 95731 for those.