1 /* { dg-do run } */
2 /* { dg-require-effective-target sync_char_short } */
3 /* { dg-options "-Wsync-nand" } */
4 /* { dg-options "-Wsync-nand -march=i486" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
5 /* { dg-options "-Wsync-nand -mcpu=v9" { target sparc*-*-* } } */
6 
7 
8 extern void abort (void);
9 
main(void)10 int main (void)
11 {
12 
13   short xLoc;
14   short xIn, xOut, xExpect, i = 1;
15 
16   xLoc = xIn = ~ (1 << i);
17   xExpect = ~ (xIn & 0x7F);
18 
19   xOut = __sync_nand_and_fetch (&xLoc, 0x7F); /* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" } */
20 
21   if (xOut != xExpect)
22     abort ();
23 
24   return 0;
25 }
26