(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
analyzer/
asm-x86-lp64-2.c
       1  /* { dg-do compile { target x86_64-*-* } } */
       2  /* { dg-require-effective-target lp64 } */
       3  
       4  /* Adapted from Linux x86: page_ref_dec_and_test.c (GPL-2.0).  */
       5  
       6  typedef _Bool bool;
       7  
       8  typedef struct {
       9    int counter;
      10  } atomic_t;
      11  
      12  bool
      13  arch_atomic_dec_and_test(atomic_t *v) {
      14    return ({
      15      bool c;
      16      asm volatile(".pushsection .smp_locks,\"a\"\n"
      17                   ".balign 4\n"
      18                   ".long 671f - .\n"
      19                   ".popsection\n"
      20                   "671:"
      21                   "\n\tlock; "
      22                   "decl"
      23                   " "
      24                   "%[var]"
      25                   "\n\t/* output condition code "
      26                   "e"
      27                   "*/\n"
      28                   : [ var ] "+m"(v->counter), "=@cc"
      29                                               "e"(c)
      30                   :
      31                   : "memory");
      32      c;
      33    });
      34  }