blob: 005add826ba52054c6508eff0df7376c777c6628 [file] [log] [blame]
// { dg-do compile { target c++11 } }
void
foo (int x)
{
[[omp::directive (parallel)]]
#pragma omp for // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
for (int i = 0; i < 16; i++)
;
[[omp::directive (barrier)]] // { dg-error "standalone OpenMP directives in 'omp::directive' attribute can only appear on an empty statement" }
#pragma omp flush
;
#pragma omp parallel
[[omp::directive (master)]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
;
#pragma omp teams
[[omp::sequence (directive (parallel), directive (master))]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
;
#pragma omp task
[[omp::directive (flush)]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
;
#pragma omp master
[[omp::directive (flush)]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
;
#pragma omp for ordered
for (int i = 0; i < 16; i++)
#pragma omp ordered
[[omp::directive (flush)]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
;
#pragma omp single
[[omp::directive (flush)]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
;
#pragma omp taskgroup
[[omp::directive (taskyield)]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
;
#pragma omp target data map (tofrom: x)
[[omp::directive (flush)]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
;
#pragma omp target
[[omp::directive (teams)]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
;
[[omp::directive (parallel)]]
#pragma omp master // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
[[omp::sequence (omp::directive (taskloop))]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
for (int i = 0; i < 16; i++)
;
#pragma omp parallel
[[omp::directive (for)]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
for (int i = 0; i < 16; i++)
;
#pragma omp for
[[omp::directive (master)]] // { dg-error "for statement expected before '\\\[' token" }
;
#pragma omp target teams
[[omp::directive (parallel)]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
;
#pragma omp parallel master
[[omp::directive (taskloop)]] // { dg-error "mixing OpenMP directives with attribute and pragma syntax on the same statement" }
for (int i = 0; i < 16; i++)
;
}