https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121022
Bug ID: 121022 Summary: Suboptimal code generation for atomic_thread_fence Product: gcc Version: 15.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: mmyangfl at gmail dot com Target Milestone: --- On x86, atomic_thread_fence usually results in nop (except for memory_order_seq_cst). However, #include <stdatomic.h> #define test(mode) \ int mode(int res) { \ if (res) atomic_thread_fence(memory_order_ ## mode); \ return res; \ } test(relaxed) test(consume) test(acquire) test(release) test(acq_rel) test(seq_cst) Compiled with -O3: consume: mov eax, edi test edi, edi jne .L9 <- Superfluous, identical branches ret .L9: ret