On Tue, Nov 27, 2012 at 12:47:50PM +0400, Dmitry Vyukov wrote: > Yes, you are right. > I think I've done them atomically initially because of things like > FUTEX_WAKE_OP. I will fix that.
Any progress on that? BTW, the current template<typename T> T func_nand(T v, T op) { return ~v & op; } is wrong not just by not being atomic (similarly to others), but furthermore because __sync_fetch_and_nand (and __atomic etc.) are return ~(v & op); instead (GCC < 4.4 did it wrongly as ~v & op; though). Jakub