diff options
Diffstat (limited to 'clang/test/OpenMP/target_simd_misc_messages.c')
-rw-r--r-- | clang/test/OpenMP/target_simd_misc_messages.c | 91 |
1 files changed, 89 insertions, 2 deletions
diff --git a/clang/test/OpenMP/target_simd_misc_messages.c b/clang/test/OpenMP/target_simd_misc_messages.c index 83d73fa013a..36bbb226f59 100644 --- a/clang/test/OpenMP/target_simd_misc_messages.c +++ b/clang/test/OpenMP/target_simd_misc_messages.c @@ -1,6 +1,8 @@ -// RUN: %clang_cc1 -fsyntax-only -fopenmp -verify %s -Wuninitialized +// RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=45 -verify=expected,omp45 %s -Wuninitialized +// RUN: %clang_cc1 -fsyntax-only -fopenmp -fopenmp-version=50 -verify=expected,omp50 %s -Wuninitialized -// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -verify %s -Wuninitialized +// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=45 -verify=expected,omp45 %s -Wuninitialized +// RUN: %clang_cc1 -fsyntax-only -fopenmp-simd -fopenmp-version=50 -verify=expected,omp50 %s -Wuninitialized // expected-error@+1 {{unexpected OpenMP directive '#pragma omp target simd'}} #pragma omp target simd @@ -485,3 +487,88 @@ void test_safelen_simdlen() { for (i = 0; i < 16; ++i) ; } + +void test_nontemporal() { + int i; +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} +#pragma omp target simd nontemporal( + for (i = 0; i < 16; ++i) + ; +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 2 {{expected expression}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} +#pragma omp target simd nontemporal(, + for (i = 0; i < 16; ++i) + ; +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 2 {{expected expression}} +#pragma omp target simd nontemporal(, ) + for (i = 0; i < 16; ++i) + ; +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected expression}} +#pragma omp target simd nontemporal() + for (i = 0; i < 16; ++i) + ; +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected expression}} +#pragma omp target simd nontemporal(int) + for (i = 0; i < 16; ++i) + ; +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} omp50-error@+1 {{expected variable name}} +#pragma omp target simd nontemporal(0) + for (i = 0; i < 16; ++i) + ; +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{use of undeclared identifier 'x'}} +#pragma omp target simd nontemporal(x) + for (i = 0; i < 16; ++i) + ; +// expected-error@+2 {{use of undeclared identifier 'x'}} +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{use of undeclared identifier 'y'}} +#pragma omp target simd nontemporal(x, y) + for (i = 0; i < 16; ++i) + ; +// expected-error@+3 {{use of undeclared identifier 'x'}} +// expected-error@+2 {{use of undeclared identifier 'y'}} +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{use of undeclared identifier 'z'}} +#pragma omp target simd nontemporal(x, y, z) + for (i = 0; i < 16; ++i) + ; + + int x, y; +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} +#pragma omp target simd nontemporal(x :) + for (i = 0; i < 16; ++i) + ; +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-error@+1 {{expected ')'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} +#pragma omp target simd nontemporal(x :, ) + for (i = 0; i < 16; ++i) + ; + +// omp50-note@+2 {{defined as nontemporal}} +// omp45-error@+1 2 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} omp50-error@+1 {{a variable cannot appear in more than one nontemporal clause}} +#pragma omp target simd nontemporal(x) nontemporal(x) + for (i = 0; i < 16; ++i) + ; + +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} +#pragma omp target simd private(x) nontemporal(x) + for (i = 0; i < 16; ++i) + ; + +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} +#pragma omp target simd nontemporal(x) private(x) + for (i = 0; i < 16; ++i) + ; + +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} expected-note@+1 {{to match this '('}} expected-error@+1 {{expected ',' or ')' in 'nontemporal' clause}} expected-error@+1 {{expected ')'}} +#pragma omp target simd nontemporal(x, y : 0) + for (i = 0; i < 16; ++i) + ; + +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} +#pragma omp target simd nontemporal(x) lastprivate(x) + for (i = 0; i < 16; ++i) + ; + +// omp45-error@+1 {{unexpected OpenMP clause 'nontemporal' in directive '#pragma omp target simd'}} +#pragma omp target simd lastprivate(x) nontemporal(x) + for (i = 0; i < 16; ++i) + ; +} + |