blob: 653ef187fc86319d987ec8da6ba9f185636e0642 [file] [log] [blame]
/* { dg-do compile } */
int x, r, z;
double d, v;
long double ld;
void
foo (int y, double e, long double f)
{
#pragma omp atomic compare update seq_cst
x = x > y ? y : x;
#pragma omp atomic compare relaxed
d = e > d ? e : d;
#pragma omp atomic compare
d = f < d ? f : d;
#pragma omp atomic compare seq_cst fail(relaxed)
x = 12U < x ? 12U : x;
#pragma omp atomic compare
x = x == 7 ? 24 : x;
#pragma omp atomic compare
x = x == 123UL ? 256LL : x;
#pragma omp atomic compare
ld = ld == f ? f + 5.0L : ld;
#pragma omp atomic compare
if (x == 9) { x = 5; }
#pragma omp atomic compare
if (x > 5) { x = 5; }
#pragma omp atomic compare
if (7 > x) { x = 7; }
#pragma omp atomic compare update capture seq_cst fail(acquire)
v = d = f > d ? f : d;
#pragma omp atomic update capture compare
v = x = x < 24ULL ? 24ULL : x;
#pragma omp atomic compare, capture, update
v = x = x == e ? f : x;
#pragma omp atomic capture compare
{ v = d; if (d > e) { d = e; } }
#pragma omp atomic compare capture
{ if (e < d) { d = e; } v = d; }
#pragma omp atomic compare capture
{ y = x; if (x == 42) { x = 7; } }
#pragma omp atomic capture compare weak
{ if (x == 42) { x = 7; } y = x; }
#pragma omp atomic capture compare fail(seq_cst)
if (d == 8.0) { d = 16.0; } else { v = d; }
#pragma omp atomic capture compare
{ r = x == 8; if (r) { x = 24; } }
#pragma omp atomic compare capture
{ r = x == y; if (r) { x = y + 6; } else { z = x; } }
}