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

--- Comment #37 from H.J. Lu <hjl.tools at gmail dot com> ---
It is

if ((__atomic_fetch_xor_4 ((volatile void *) a, (unsigned int) (1 << bit), 0) 
& (unsigned int) (1 << bit)) != 0)

vs

if ((__atomic_fetch_xor_4 ((volatile void *) a, 1 << bit, 0) >> bit & 1) != 0)

Why does GCC generate the second one?

Reply via email to