(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
gomp/
atomic-20.c
       1  /* { dg-do compile } */
       2  /* { dg-additional-options "-fdump-tree-original" } */
       3  /* { dg-final { scan-tree-dump-times "omp atomic release" 1 "original" } } */
       4  /* { dg-final { scan-tree-dump-times "omp atomic seq_cst" 3 "original" } } */
       5  /* { dg-final { scan-tree-dump-times "omp atomic read seq_cst" 1 "original" } } */
       6  /* { dg-final { scan-tree-dump-times "omp atomic capture seq_cst" 1 "original" } } */
       7  
       8  int i, j, k, l, m, n;
       9  
      10  void
      11  foo ()
      12  {
      13    #pragma omp atomic release
      14    i = i + 1;
      15  }
      16  
      17  #pragma omp requires atomic_default_mem_order (seq_cst)
      18  
      19  void
      20  bar ()
      21  {
      22    int v;
      23    #pragma omp atomic
      24    j = j + 1;
      25    #pragma omp atomic update
      26    k = k + 1;
      27    #pragma omp atomic read
      28    v = l;
      29    #pragma omp atomic write
      30    m = v;
      31    #pragma omp atomic capture
      32    v = n = n + 1;
      33  }