(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
atomic-op-optimize.c
       1  /* Both these atomic operations should be optimized to an exchange operation.
       2     Test that it at happens on x86 by making sure there are 2 xchg's and no
       3     compare_exchange loop.  */
       4  
       5  /* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */
       6  /* { dg-require-effective-target sync_int_long } */
       7  /* { dg-final { scan-assembler-times "cmpxchg" 0 } } */
       8  /* { dg-final { scan-assembler-times "xchg" 2 } } */
       9  
      10  int x;
      11  
      12  int f()
      13  {
      14    return __atomic_fetch_and (&x, 0, __ATOMIC_RELAXED);
      15  }
      16  
      17  int g()
      18  {
      19    return __atomic_fetch_or (&x, -1, __ATOMIC_RELAXED);
      20  }