(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
gomp/
atomic-23.c
       1  /* PR middle-end/88968 */
       2  /* { dg-do compile } */
       3  
       4  struct __attribute__((packed)) S {
       5    unsigned int a : 16;
       6    unsigned int b : 1;
       7  } s;
       8  
       9  void
      10  f1 (void)
      11  {
      12  #pragma omp atomic
      13    ++s.a;
      14  }
      15  
      16  int
      17  f2 (void)
      18  {
      19    int r;
      20  #pragma omp atomic capture
      21    {
      22      r = s.a;
      23      s.a = 0;
      24    }
      25    return r;
      26  }
      27  
      28  int
      29  f3 (void)
      30  {
      31    int r;
      32  #pragma omp atomic capture
      33    {
      34      r = s.a;
      35      s.a = s.a + 32;
      36    }
      37    return r;
      38  }
      39  
      40  int
      41  f4 (void)
      42  {
      43    int r;
      44  #pragma omp atomic capture
      45    r = s.a = s.a + 32;
      46    return r;
      47  }