https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111408
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- GCC 13.2: sarl %cl, %eax movl d(%rip), %ecx andl $1, %eax andl $31, %edx leal -9(%rcx,%rcx), %ecx cmpl %eax, %ecx While the trunk: movl a(%rip), %eax movl b(%rip), %ecx movl %eax, %edx andl $31, %edx btl %eax, %ecx The trunk somehow missed the whole 2*d - 9 part ...