// { dg-do run }

extern "C" void abort ();
int x = 6, cnt;

int
foo ()
{
  return cnt++;
}

int
main ()
{
  int v, *p;
  #pragma omp atomic update
    x = x + 7;
  #pragma omp atomic
    x = x + 7 + 6;
  #pragma omp atomic update
    x = x + 2 * 3;
  #pragma omp atomic
    x = x * (2 - 1);
  #pragma omp atomic read
    v = x;
  if (v != 32)
    abort ();
  #pragma omp atomic write
    x = 0;
  #pragma omp atomic capture
    {
      v = x;
      x = x | 1 ^ 2;
    }
  if (v != 0)
    abort ();
  #pragma omp atomic capture
    {
      v = x;
      x = x | 4 | 2;
    }
  if (v != 3)
    abort ();
  #pragma omp atomic read
    v = x;
  if (v != 7)
    abort ();
  #pragma omp atomic capture
    {
      x = x ^ 6 & 2;
      v = x;
    }
  if (v != 5)
    abort ();
  #pragma omp atomic capture
    { x = x - (6 + 4); v = x; }
  if (v != -5)
    abort ();
  #pragma omp atomic capture
    { v = x; x = x - (1 | 2); }
  if (v != -5)
    abort ();
  #pragma omp atomic read
    v = x;
  if (v != -8)
    abort ();
  #pragma omp atomic
    x = x * -4 / 2;
  #pragma omp atomic read
    v = x;
  if (v != 16)
    abort ();
  p = &x;
  #pragma omp atomic update
    p[(foo (), 0)] = p[(foo (), 0)] - 16;
  #pragma omp atomic read
    v = x;
  if (cnt != 2 || v != 0)
    abort ();
  #pragma omp atomic capture
    {
      p[(foo (), 0)] += 6;
      v = p[(foo (), 0)];
    }
  if (cnt != 4 || v != 6)
    abort ();
  #pragma omp atomic capture
    {
      v = p[(foo (), 0)];
      p[(foo (), 0)] += 6;
    }
  if (cnt != 6 || v != 6)
    abort ();
  #pragma omp atomic read
    v = x;
  if (v != 12)
    abort ();
  #pragma omp atomic capture
    {
      p[(foo (), 0)] = p[(foo (), 0)] + 6;
      v = p[(foo (), 0)];
    }
  if (cnt != 9 || v != 18)
    abort ();
  #pragma omp atomic capture
    {
      v = p[(foo (), 0)];
      p[(foo (), 0)] = p[(foo (), 0)] + 6;
    }
  if (cnt != 12 || v != 18)
    abort ();
  #pragma omp atomic read
    v = x;
  if (v != 24)
    abort ();
  #pragma omp atomic capture
  { v = p[(foo (), 0)]; p[(foo (), 0)]++; }
  #pragma omp atomic capture
  { v = p[(foo (), 0)]; ++p[(foo (), 0)]; }
  #pragma omp atomic capture
  { p[(foo (), 0)]++; v = p[(foo (), 0)]; }
  #pragma omp atomic capture
  { ++p[(foo (), 0)]; v = p[(foo (), 0)]; }
  if (cnt != 20 || v != 28)
    abort ();
  #pragma omp atomic capture
  { v = p[(foo (), 0)]; p[(foo (), 0)]--; }
  #pragma omp atomic capture
  { v = p[(foo (), 0)]; --p[(foo (), 0)]; }
  #pragma omp atomic capture
  { p[(foo (), 0)]--; v = p[(foo (), 0)]; }
  #pragma omp atomic capture
  { --p[(foo (), 0)]; v = p[(foo (), 0)]; }
  if (cnt != 28 || v != 24)
    abort ();
  return 0;
}
