(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
atomic-load-2.c
       1  /* Test __atomic routines for existence and proper execution on 2 byte 
       2     values with each valid memory model.  */
       3  /* { dg-do run } */
       4  /* { dg-require-effective-target sync_char_short } */
       5  
       6  
       7  /* Test the execution of the __atomic_load_n builtin for a short.  */
       8  
       9  extern void abort(void);
      10  
      11  short v, count;
      12  
      13  
      14  int
      15  main ()
      16  {
      17    v = 0;
      18    count = 0;
      19  
      20    if (__atomic_load_n (&v, __ATOMIC_RELAXED) != count++) 
      21      abort(); 
      22    else 
      23      v++;
      24  
      25    if (__atomic_load_n (&v, __ATOMIC_ACQUIRE) != count++) 
      26      abort(); 
      27    else 
      28      v++;
      29  
      30    if (__atomic_load_n (&v, __ATOMIC_CONSUME) != count++) 
      31      abort(); 
      32    else 
      33      v++;
      34  
      35    if (__atomic_load_n (&v, __ATOMIC_SEQ_CST) != count++) 
      36      abort(); 
      37    else 
      38      v++;
      39  
      40    /* Now test the generic variants.  */
      41  
      42    __atomic_load (&v, &count, __ATOMIC_RELAXED);
      43    if (count != v)
      44      abort(); 
      45    else 
      46      v++;
      47  
      48    __atomic_load (&v, &count, __ATOMIC_ACQUIRE);
      49    if (count != v)
      50      abort(); 
      51    else 
      52      v++;
      53  
      54    __atomic_load (&v, &count, __ATOMIC_CONSUME);
      55    if (count != v)
      56      abort(); 
      57    else 
      58      v++;
      59  
      60    __atomic_load (&v, &count, __ATOMIC_SEQ_CST);
      61    if (count != v)
      62      abort(); 
      63    else 
      64      v++;
      65  
      66  
      67    return 0;
      68  }
      69