https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103069

--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> ---
nptl/pthread_mutex_unlock.c in glibc has:

     do  
        { 
          newval = oldval & PTHREAD_MUTEX_PRIO_CEILING_MASK;
        }
      while (!atomic_compare_exchange_weak_release (&mutex->__data.__lock,
                                                    &oldval, newval));

GCC 12 generates:

         90a81: 41 89 c0                mov    %eax,%r8d
         90a84: 41 81 e0 00 00 f8 ff    and    $0xfff80000,%r8d
         90a8b: f0 44 0f b1 07          lock cmpxchg %r8d,(%rdi)       
         90a90: 75 ef                   jne    90a81
<__pthread_mutex_unlock_ful
l+0x81>

Reply via email to