llvm-project/clang/test/OpenMP/parallel_masked_taskloop_simd_final_messages.cpp
Fazlay Rabbi 38bcd483dd [OpenMP] Initial parsing and semantic support for 'parallel masked taskloop simd' construct
This patch gives basic parsing and semantic support for
"parallel masked taskloop simd" construct introduced in
OpenMP 5.1 (section 2.16.10)

Differential Revision: https://reviews.llvm.org/D128946
2022-07-01 08:57:15 -07:00

95 lines
4.2 KiB
C++

// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 100 %s -Wuninitialized
// RUN: %clang_cc1 -verify -fopenmp-simd -ferror-limit 100 %s -Wuninitialized
void foo() {
}
bool foobool(int argc) {
return argc;
}
struct S1; // expected-note {{declared here}}
template <class T, class S> // expected-note {{declared here}}
int tmain(T argc, S **argv) {
T z;
#pragma omp parallel masked taskloop simd final // expected-error {{expected '(' after 'final'}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final() // expected-error {{expected expression}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(argc)) // expected-warning {{extra tokens at the end of '#pragma omp parallel masked taskloop simd' are ignored}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(argc > 0 ? argv[1] : argv[2] + z)
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(foobool(argc)), final(true) // expected-error {{directive '#pragma omp parallel masked taskloop simd' cannot contain more than one 'final' clause}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(S) // expected-error {{'S' does not refer to a value}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(argv[1] = 2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(argc)
for (int i = 0; i < 10; ++i)
foo();
return 0;
}
int main(int argc, char **argv) {
int z;
#pragma omp parallel masked taskloop simd final // expected-error {{expected '(' after 'final'}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final() // expected-error {{expected expression}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(argc // expected-error {{expected ')'}} expected-note {{to match this '('}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(argc)) // expected-warning {{extra tokens at the end of '#pragma omp parallel masked taskloop simd' are ignored}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(argc > 0 ? argv[1] : argv[2] - z)
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(foobool(argc)), final(true) // expected-error {{directive '#pragma omp parallel masked taskloop simd' cannot contain more than one 'final' clause}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(S1) // expected-error {{'S1' does not refer to a value}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(argv[1] = 2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(1 0) // expected-error {{expected ')'}} expected-note {{to match this '('}}
for (int i = 0; i < 10; ++i)
foo();
#pragma omp parallel masked taskloop simd final(if (tmain(argc, argv) // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
for (int i = 0; i < 10; ++i)
foo();
return tmain(argc, argv);
}