Files
llvm-project/clang/test/OpenMP/taskwait_messages.cpp
Alexey Bataev c4fad65bfc [OPENMP] Fix for declarative/standalone directives use.
Fixes processing of declarative directives and standalone executable directives. Declarative directives should not be allowed as an immediate statements and standalone executable directives are allowed to be used in case-stmt constructs.

llvm-svn: 257586
2016-01-13 11:18:54 +00:00

111 lines
2.9 KiB
C++

// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s
template <class T>
T tmain(T argc) {
#pragma omp taskwait
;
#pragma omp taskwait untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp taskwait'}}
#pragma omp taskwait unknown // expected-warning {{extra tokens at the end of '#pragma omp taskwait' are ignored}}
if (argc)
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
if (argc) {
#pragma omp taskwait
}
while (argc)
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
while (argc) {
#pragma omp taskwait
}
do
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
while (argc)
;
do {
#pragma omp taskwait
} while (argc);
switch (argc)
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
switch (argc)
case 1:
#pragma omp taskwait
switch (argc)
case 1: {
#pragma omp taskwait
}
switch (argc) {
#pragma omp taskwait
case 1:
#pragma omp taskwait
break;
default: {
#pragma omp taskwait
} break;
}
for (;;)
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
for (;;) {
#pragma omp taskwait
}
label:
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
label1 : {
#pragma omp taskwait
}
return T();
}
int main(int argc, char **argv) {
#pragma omp taskwait
;
#pragma omp taskwait untied // expected-error {{unexpected OpenMP clause 'untied' in directive '#pragma omp taskwait'}}
#pragma omp taskwait unknown // expected-warning {{extra tokens at the end of '#pragma omp taskwait' are ignored}}
if (argc)
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
if (argc) {
#pragma omp taskwait
}
while (argc)
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
while (argc) {
#pragma omp taskwait
}
do
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
while (argc)
;
do {
#pragma omp taskwait
} while (argc);
switch (argc)
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
switch (argc)
case 1:
#pragma omp taskwait
switch (argc)
case 1: {
#pragma omp taskwait
}
switch (argc) {
#pragma omp taskwait
case 1:
#pragma omp taskwait
break;
default: {
#pragma omp taskwait
} break;
}
for (;;)
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
for (;;) {
#pragma omp taskwait
}
label:
#pragma omp taskwait // expected-error {{'#pragma omp taskwait' cannot be an immediate substatement}}
label1 : {
#pragma omp taskwait
}
return tmain(argc);
}