libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / pr103184-1.c
blobe567f95f63f3227b638fd28045c0ff1295231652
1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
4 extern char foo;
5 extern unsigned char bar;
7 int
8 foo1 (void)
10 return __sync_fetch_and_and (&foo, ~1) & 1;
13 int
14 foo2 (void)
16 return __sync_fetch_and_or (&foo, 1) & 1;
19 int
20 foo3 (void)
22 return __sync_fetch_and_xor (&foo, 1) & 1;
25 unsigned short
26 bar1 (void)
28 return __sync_fetch_and_and (&bar, ~1) & 1;
31 unsigned short
32 bar2 (void)
34 return __sync_fetch_and_or (&bar, 1) & 1;
37 unsigned short
38 bar3 (void)
40 return __sync_fetch_and_xor (&bar, 1) & 1;
43 /* { dg-final { scan-assembler-times "lock;?\[ \t\]*cmpxchgb" 6 { target { x86_64-*-* i?86-*-* } } } } */