https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77881
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Well, generally if we want to store a < 0 or a >= 0 into a bool/int variable etc., then the right shift is desirable, because we avoid branching or sets/setns, but not when the result is used in a conditional jump.