| // { 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))]]; |