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

--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> ---
Instead of generating:

        movl    f(%rip), %eax
.L2:
        movd    %eax, %xmm0
        addss   .LC0(%rip), %xmm0
        movd    %xmm0, %edx
        lock cmpxchgl   %edx, f(%rip)
        jne     .L2
        ret

we want

        movl    f(%rip), %eax
.L2:
        movd    %eax, %xmm0
        addss   .LC0(%rip), %xmm0
        movd    %xmm0, %edx
        cmpl    f(%rip), %eax
        jne     .L2
        lock cmpxchgl   %edx, f(%rip)
        jne     .L2
        ret

Reply via email to