https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82454
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Note the missed-optimization is that any (1 << C) >> x can be instead written as 1 << C - x iff we know that C - x > 0. For C == precision(x)-1 we can infer that directly from x being mentioned in the shift.