http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968
--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> --- For int __attribute__((noinline)) foo1 (int x, int y) { x &= ~(1 << y); return x; } we generate movl %esi, %ecx movl $-2, %eax roll %cl, %eax andl %edi, %eax ret I expect movl %edi, %eax btr %esi, %eax ret