https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103069
--- Comment #15 from Hongyu Wang <wwwhhhyyy333 at gmail dot com> --- (In reply to Thiago Macieira from comment #14) > I'd restrict relaxations to loops emitted by the compiler. All other atomic > operations shouldn't be modified at all, unless the user asks for it. That > includes non-looping atomic operations (like LOCK BTC, LOCK XADD) as well as > a pure LOCK CMPXCHG that came from a single __atomic_compare_exchange by the > user. > > I'd welcome the ability to relax the latter, especially if with one codebase > I could be efficient in CAS architectures as well as LL/SC ones. The latest patch relaxed the pure LOCK CMPXCHG with -mrelax-cmpxchg-loop as the commit message shows. So if you want, I can split this part to another switch like -mrelax-cmpxchg-insn.