summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP/target_simd_misc_messages.c
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/OpenMP/target_simd_misc_messages.c')
-rw-r--r--clang/test/OpenMP/target_simd_misc_messages.c91
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)
+ ;
+}
+
OpenPOWER on IntegriCloud