1 // PR target/86314 2 // { dg-do run { target sync_int_long } } 3 // { dg-options "-O2" } 4 5 __attribute__((noinline, noclone)) unsigned long foo(unsigned long * p)6foo (unsigned long *p) 7 { 8 unsigned long m = 1UL << ((*p & 1) ? 1 : 0); 9 unsigned long n = __atomic_fetch_or (p, m, __ATOMIC_SEQ_CST); 10 return (n & m) == 0; 11 } 12 13 int main()14main () 15 { 16 unsigned long v = 1; 17 if (foo (&v) != 1) 18 __builtin_abort (); 19 return 0; 20 } 21