// { dg-do run }

extern "C" void abort (void);

template <typename S, typename T>
void
foo (void)
{
  extern S l, m;
  extern T i, j;

  #pragma omp atomic read
    i = l;
  #pragma omp atomic read
    m = j;
  if (i != 77 || m != 88)
    abort ();
  #pragma omp atomic write
    l = 1 + i + 6 * 1;
  #pragma omp atomic write
    j = 170 - 170 + m + 1 * 7;
  #pragma omp atomic capture
    i = l += 4;
  #pragma omp atomic capture
    m = j += 4;
  if (i != 88 || m != 99)
    abort ();
  #pragma omp atomic capture
    {
      i = l;
      l += 4;
    }
  #pragma omp atomic capture
    {
      m = j;
      j += 4;
    }
  if (i != 88 || m != 99)
    abort ();
  #pragma omp atomic capture
    {
      l += 4;
      i = l;
    }
  #pragma omp atomic capture
    {
      j += 4;
      m = j;
    }
  if (i != 96 || m != 107)
    abort ();
}

long long l, m;
int i, j;

int
main ()
{
  l = 77;
  j = 88;
  foo <long long, int> ();
}
