(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr102566-11.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2" } */
       3  
       4  #include <stdatomic.h>
       5  #include <stdbool.h>
       6  
       7  #define MASK 0x1234
       8  
       9  bool
      10  foo1 (_Atomic int *v)
      11  {
      12    return atomic_fetch_or_explicit (v, MASK, memory_order_relaxed) & MASK;
      13  }
      14  
      15  bool
      16  foo2 (_Atomic unsigned int *v, int mask)
      17  {
      18    return atomic_fetch_or_explicit (v, mask, memory_order_relaxed) & mask;
      19  }
      20  
      21  bool
      22  foo3 (_Atomic unsigned int *v, int mask)
      23  {
      24    return !(atomic_fetch_or_explicit (v, mask, memory_order_relaxed) & mask);
      25  }
      26  
      27  /* { dg-final { scan-assembler-times "lock;?\[ \t\]*cmpxchg" 3 } } */
      28  /* { dg-final { scan-assembler-not "bts" } } */