https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102566
--- Comment #20 from Thiago Macieira <thiago at kde dot org> --- And: $ cat /tmp/test.cpp #include <atomic> bool tbit(std::atomic<long> &i) { return i.fetch_xor(CONSTANT, std::memory_order_relaxed) & (CONSTANT); } $ ~/dev/gcc/bin/gcc "-DCONSTANT=(1LL<<63)" -S -o - -O2 /tmp/test.cpp | sed '1,/startproc/d;/endproc/,$d' lock btcq $63, (%rdi) setc %al ret Nice!