1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
5 extern unsigned char bar
;
10 return __sync_fetch_and_and (&foo
, ~1) & 1;
16 return __sync_fetch_and_or (&foo
, 1) & 1;
22 return __sync_fetch_and_xor (&foo
, 1) & 1;
28 return __sync_fetch_and_and (&bar
, ~1) & 1;
34 return __sync_fetch_and_or (&bar
, 1) & 1;
40 return __sync_fetch_and_xor (&bar
, 1) & 1;
43 /* { dg-final { scan-assembler-times "lock;?\[ \t\]*cmpxchgb" 6 { target { x86_64-*-* i?86-*-* } } } } */