text: /* { dg-do run } */
  
  extern void abort (void);
  int x = 6;
  float y;
  
  int
  main (void)
  {
    int v;
    float f;
    #pragma omp atomic read
      v = x;
    if (v != 6)
      abort ();
    #pragma omp atomic write
      x = 17;
    #pragma omp atomic read
    v = x;
    if (v != 17)
      abort ();
    #pragma omp atomic update
      x++;
    #pragma omp atomic read
      v = x;
    if (v != 18)
      abort ();
    #pragma omp atomic capture
      v = x++;
    if (v != 18)
      abort ();
    #pragma omp atomic read
      v = x;
    if (v != 19)
      abort ();
    #pragma omp atomic capture
      v = ++x;
    if (v != 20)
      abort ();
    #pragma omp atomic read
      v = x;
    if (v != 20)
      abort ();
    #pragma omp atomic capture
      { v = x; x *= 3; }
    if (v != 20)
      abort ();
    #pragma omp atomic read
      v = x;
    if (v != 60)
      abort ();
    #pragma omp atomic capture
      {
        x |= 2;
        v = x;
      }
    if (v != 62)
      abort ();
    #pragma omp atomic read
      v = x;
    if (v != 62)
      abort ();
    #pragma omp atomic capture
      { v = x; x++; }
    if (v != 62)
      abort ();
    #pragma omp atomic capture
      { v = x; ++x; }
    if (v != 63)
      abort ();
    #pragma omp atomic capture
      {
        ++x;
        v = x;
      }
    if (v != 65)
      abort ();
  #pragma omp atomic capture
  {x++;v=x;}if (v != 66)
      abort ();
    #pragma omp atomic read
      v = x;
    if (v != 66)
      abort ();
    #pragma omp atomic capture
      { v = x; x--; }
    if (v != 66)
      abort ();
    #pragma omp atomic capture
      { v = x; --x; }
    if (v != 65)
      abort ();
    #pragma omp atomic capture
      {
        --x;
        v = x;
      }
    if (v != 63)
      abort ();
    #pragma omp atomic capture
    { x--; v = x; } if (v != 62)
      abort ();
    #pragma omp atomic read
      v = x;
    if (v != 62)
      abort ();
    #pragma omp atomic write
      y = 17.5f;
    #pragma omp atomic read
      f = y;
    if (f != 17.5)
      abort ();
    #pragma omp atomic update
      y *= 2.0f;
    #pragma omp atomic read
      f = y;
    if (y != 35.0)
      abort ();
    #pragma omp atomic capture
      f = y *= 2.0f;
    if (f != 70.0)
      abort ();
    #pragma omp atomic capture
      f = y++;
    if (f != 70.0)
      abort ();
    #pragma omp atomic read
      f = y;
    if (f != 71.0)
      abort ();
    #pragma omp atomic capture
      f = --y;
    if (f != 70.0)
      abort ();
    #pragma omp atomic read
      f = y;
    if (f != 70.0)
      abort ();
    #pragma omp atomic capture
      { f = y; y /= 2.0f; }
    if (f != 70.0)
      abort ();
    #pragma omp atomic read
      f = y;
    if (f != 35.0)
      abort ();
    #pragma omp atomic capture
      { y /= 2.0f; f = y; }
    if (f != 17.5)
      abort ();
    #pragma omp atomic read
      f = y;
    if (f != 17.5)
      abort ();
    return 0;
  }
  