// PR target/86314 // { dg-do run { target sync_int_long } } // { dg-options "-O2" } __attribute__((noinline, noclone)) unsigned long foo (unsigned long *p) { unsigned long m = 1UL << ((*p & 1) ? 1 : 0); unsigned long n = __atomic_fetch_or (p, m, __ATOMIC_SEQ_CST); return (n & m) == 0; } int main () { unsigned long v = 1; if (foo (&v) != 1) __builtin_abort (); return 0; }