https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103090
--- Comment #1 from Thiago Macieira <thiago at kde dot org> --- One more: bool tsign3(std::atomic<int> &i) { // any two or more bits, so long as the sign bit is one of them // (or the compiler doesn't know what's in the variable) int bits = 1 | signbit; return i.fetch_and(bits, std::memory_order_relaxed) & signbit; }