blob: fa02299bcafd902bc7927a8b4eff1b0bf47ad8fc [file] [log] [blame]
// { dg-do compile { target c++11 } }
int n1 = 0, n2 = 42;
[[omp::sequence (directive (requires, atomic_default_mem_order (seq_cst)))]];
[[omp::directive (declare reduction (plus: int: omp_out += omp_in) initializer (omp_priv = 0))]];
int a;
[[omp::directive (declare target (a))]];
int t;
[[omp::sequence (omp::directive (threadprivate (t)))]];
int b, c, e;
[[omp::directive (declare target, to (b), link (c), enter (e))]];
[[omp::directive (declare target)]];
[[omp::directive (declare target)]];
int d;
[[omp::directive (end declare target)]];
[[omp::directive (end declare target)]];
[[omp::directive (nothing)]];
[[omp::directive (begin assumes no_openmp no_openmp_routines no_parallelism
absent (atomic, barrier, cancel, cancellation point)
absent (critical, depobj)
absent (distribute, flush, loop, masked, master, nothing, ordered)
absent (parallel, scan, scope, section, sections, simd, single, task)
absent (taskgroup, taskloop, taskwait, taskyield)
absent (target, teams, for, error) holds (n1 < n2))]];
void foo (void) {}
[[omp::directive (end assumes)]];
[[omp::directive (begin assumes, no_openmp, no_openmp_routines, no_parallelism,
absent (atomic, barrier, cancel, cancellation point),
absent (critical, depobj),
absent (distribute, flush, loop, masked, master, nothing, ordered),
absent (parallel, scan, scope, section, sections, simd, single, task),
absent (taskgroup, taskloop, taskwait, taskyield),
absent (target, teams, for, error), holds (n1 < n2))]];
[[omp::directive (begin assumes no_openmp)]];
void bar (void) {}
[[omp::sequence (omp::directive (end assumes), omp::directive (end assumes))]];