https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56096
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- GCC 7-10 produced: movw r3, #32896 tst r1, r3 it ne lsrne r0, r0, #8 bx lr But GCC 11 produces: movw r3, #32896 tst r1, r3 ite ne movne r3, #1 moveq r3, #0 lsls r3, r3, #3 lsrs r0, r0, r3 Which is definitely worse.