https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102566
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> --- This works: [hjl@gnu-cfl-2 pr102566]$ cat y.c #include <stdatomic.h> _Atomic int v; unsigned int foo () { return atomic_fetch_or_explicit (&v, 1, memory_order_relaxed) & 1; } [hjl@gnu-cfl-2 pr102566]$ make y.s /export/build/gnu/tools-build/gcc-gitlab-debug/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/tools-build/gcc-gitlab-debug/build-x86_64-linux/gcc/ -O2 -S y.c [hjl@gnu-cfl-2 pr102566]$ cat y.s .file "y.c" .text .p2align 4 .globl foo .type foo, @function foo: .LFB0: .cfi_startproc xorl %eax, %eax lock btsl $0, v(%rip) setc %al ret .cfi_endproc .LFE0: .size foo, .-foo .globl v .bss .align 4 .type v, @object .size v, 4 v: .zero 4 .ident "GCC: (GNU) 12.0.0 20211003 (experimental)" .section .note.GNU-stack,"",@progbits [hjl@gnu-cfl-2 pr102566]$