/* { dg-do run } */

extern
#ifdef __cplusplus
"C"
#endif
void abort (void);
int x = 6;
int w, y;

int *
foo (void)
{
  if (w)
    abort ();
  return &y;
}

int
main ()
{
  int v, r;
  #pragma omp atomic compare
  x = x > 8 ? 8 : x;
  #pragma omp atomic read
  v = x;
  if (v != 6)
    abort ();
  #pragma omp atomic compare
  x = x > 4 ? 4 : x;
  #pragma omp atomic read
  v = x;
  if (v != 4)
    abort ();
  #pragma omp atomic compare capture
  v = x = x < 8 ? 8 : x;
  if (v != 8)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 8)
    abort ();
  #pragma omp atomic capture compare
  { v = x; x = x < 12 ? 12 : x; }
  if (v != 8)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 12)
    abort ();
  #pragma omp atomic capture compare
  { v = x; x = x < 4 ? 4 : x; }
  if (v != 12)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 12)
    abort ();
  #pragma omp atomic write
  x = -32;
  #pragma omp atomic capture compare seq_cst fail(relaxed)
  { x = 12U < x ? 12U : x; v = x; }
  if (v != 12)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 12)
    abort ();
  #pragma omp atomic compare
  x = x == 12 ? 16 : x;
  #pragma omp atomic read
  v = x;
  if (v != 16)
    abort ();
  r = 57;
  #pragma omp atomic compare capture
  v = x = x == 15 ? r + 7 : x;
  if (v != 16)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 16)
    abort ();
  #pragma omp atomic capture, update, compare seq_cst fail(acquire)
  { v = x; x = x == 73ULL - r ? 12LL : x; }
  if (v != 16)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 12)
    abort ();
  #pragma omp atomic update, compare, capture
  { x = x == 69LL - r ? (unsigned char) 6 : x; v = x; }
  if (v != 6)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 6)
    abort ();
  #pragma omp atomic compare
  if (x > 8) { x = 8; }
  #pragma omp atomic read
  v = x;
  if (v != 6)
    abort ();
  #pragma omp atomic compare
  if (x > 4) { x = 4; }
  #pragma omp atomic read
  v = x;
  if (v != 4)
    abort ();
  #pragma omp atomic compare capture
  { if (x < 8) { x = 8; } v = x; }
  if (v != 8)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 8)
    abort ();
  #pragma omp atomic capture compare
  { v = x; if (x < 12) { x = 12; } }
  if (v != 8)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 12)
    abort ();
  #pragma omp atomic capture compare
  { v = x; if (x < 4) { x = 4; } }
  if (v != 12)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 12)
    abort ();
  #pragma omp atomic write
  x = -32;
  #pragma omp atomic capture compare seq_cst fail(relaxed)
  { if (12U < x) { x = 12U; } v = x; }
  if (v != 12)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 12)
    abort ();
  #pragma omp atomic compare
  if (x == 12) { x = 16; }
  #pragma omp atomic read
  v = x;
  if (v != 16)
    abort ();
  r = 57;
  #pragma omp atomic compare capture
  { if (x == 15) { x = r + 7; } v = x; }
  if (v != 16)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 16)
    abort ();
  #pragma omp atomic capture, update, compare seq_cst fail(acquire)
  { v = x; if (x == 73ULL - r) { x = 12LL; } }
  if (v != 16)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 12)
    abort ();
  #pragma omp atomic update, compare, capture
  { if (x == 69LL - r) { x = (unsigned char) 6; } v = x; }
  if (v != 6)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 6)
    abort ();
  v = 24;
  #pragma omp atomic compare capture
  if (x == 12) { x = 16; } else { v = x; }
  if (v != 6)
    abort ();
  v = 32;
  #pragma omp atomic read
  v = x;
  if (v != 6)
    abort ();
  v = 147;
  #pragma omp atomic capture compare
  if (x == 6) { x = 57; } else { v = x; }
  if (v != 147)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 57)
    abort ();
  #pragma omp atomic update, capture, compare, weak, seq_cst, fail (relaxed)
  { r = x == 137; if (r) { x = 174; } }
  if (r)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 57)
    abort ();
  #pragma omp atomic compare capture fail (relaxed)
  { r = x == 57; if (r) { x = 6; } }
  if (r != 1)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 6)
    abort ();
  v = -5;
  #pragma omp atomic capture compare
  { r = x == 17; if (r) { x = 25; } else { v = x; } }
  if (r || v != 6)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 6)
    abort ();
  v = 15;
  #pragma omp atomic capture compare
  { r = x == 6; if (r) { x = 23; } else { v = x; } }
  if (r != 1 || v != 15)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 23)
    abort ();
  w = 1;
  #pragma omp atomic compare capture
  if (x == 23) { x = 57; } else { foo ()[0] = x; }
  #pragma omp atomic read
  v = x;
  if (v != 57)
    abort ();
  #pragma omp atomic capture update compare
  { r = x == 57; if (r) { x = 23; } else { foo ()[0] = x; } }
  if (r != 1)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 23)
    abort ();
  w = 0;
  #pragma omp atomic compare capture
  if (x == 24) { x = 57; } else { foo ()[0] = x; }
  if (y != 23)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 23)
    abort ();
  y = -5;
  #pragma omp atomic capture update compare
  {
    r = x == 57;
    if (r)
      {
	x = 27;
      }
    else
      {
	foo ()[0] = x;
      }
  }
  if (r || y != 23)
    abort ();
  #pragma omp atomic read
  v = x;
  if (v != 23)
    abort ();
  return 0;
}
