summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP/for_collapse_messages.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/OpenMP/for_collapse_messages.cpp')
-rw-r--r--clang/test/OpenMP/for_collapse_messages.cpp56
1 files changed, 49 insertions, 7 deletions
diff --git a/clang/test/OpenMP/for_collapse_messages.cpp b/clang/test/OpenMP/for_collapse_messages.cpp
index ce656515b1e..2316ca6ba3f 100644
--- a/clang/test/OpenMP/for_collapse_messages.cpp
+++ b/clang/test/OpenMP/for_collapse_messages.cpp
@@ -1,10 +1,16 @@
-// RUN: %clang_cc1 -verify -fopenmp %s -Wuninitialized
-// RUN: %clang_cc1 -verify -fopenmp -std=c++98 %s -Wuninitialized
-// RUN: %clang_cc1 -verify -fopenmp -std=c++11 %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp45 -fopenmp %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp45 -fopenmp -std=c++98 %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp45 -fopenmp -std=c++11 %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp50 -fopenmp -fopenmp-version=50 %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp50 -fopenmp -fopenmp-version=50 -std=c++98 %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp50 -fopenmp -fopenmp-version=50 -std=c++11 %s -Wuninitialized
-// RUN: %clang_cc1 -verify -fopenmp-simd %s -Wuninitialized
-// RUN: %clang_cc1 -verify -fopenmp-simd -std=c++98 %s -Wuninitialized
-// RUN: %clang_cc1 -verify -fopenmp-simd -std=c++11 %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp45 -fopenmp-simd %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp45 -fopenmp-simd -std=c++98 %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp45 -fopenmp-simd -std=c++11 %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp50 -fopenmp-simd -fopenmp-version=50 %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp50 -fopenmp-simd -fopenmp-version=50 -std=c++98 %s -Wuninitialized
+// RUN: %clang_cc1 -verify=expected,omp50 -fopenmp-simd -fopenmp-version=50 -std=c++11 %s -Wuninitialized
void foo() {
}
@@ -87,7 +93,7 @@ int main(int argc, char **argv) {
#endif
// expected-error@+2 2 {{directive '#pragma omp for' cannot contain more than one 'collapse' clause}}
// expected-error@+1 {{argument to 'collapse' clause must be a strictly positive integer value}}
- #pragma omp for collapse (foobool(argc)), collapse (true), collapse (-5)
+ #pragma omp for collapse (foobool(argc)), collapse (true), collapse (-5)
for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
#pragma omp for collapse (S1) // expected-error {{'S1' does not refer to a value}}
for (int i = 4; i < 12; i++) argv[0][i] = argv[0][i] - argv[0][i-4];
@@ -108,3 +114,39 @@ int main(int argc, char **argv) {
return tmain<int, char, 1, 0>(argc, argv);
}
+void imperfectlyNestedLoops() {
+#pragma omp for collapse(2) // expected-note {{as specified in 'collapse' clause}}
+ for (int i = 0; i < 10; ++i) { // expected-error {{expected 2 for loops after '#pragma omp for', but found only 1}}
+ for (int j = 0; j < 10; ++j)
+ ;
+ for (int j = 0; j < 10; ++j)
+ ;
+ }
+#pragma omp for collapse(2) // expected-note {{as specified in 'collapse' clause}}
+ for (int i = 0; i < 10; ++i) { // expected-error {{expected 2 for loops after '#pragma omp for', but found only 1}}
+ {
+ for (int j = 0; j < 10; ++j)
+ ;
+ for (int j = 0; j < 10; ++j)
+ ;
+ }
+ {
+ for (int j = 0; j < 10; ++j)
+ ;
+ for (int j = 0; j < 10; ++j)
+ ;
+ }
+ }
+#pragma omp for collapse(2) // omp45-note {{as specified in 'collapse' clause}}
+ for (int i = 0; i < 10; ++i) { // omp45-error {{expected 2 for loops after '#pragma omp for', but found only 1}}
+ int a, b, c;
+ for (int j = 0; j < 10; ++j)
+ ;
+ {
+ for (int j = 0; j < 10; ++j)
+ ;
+ for (int j = 0; j < 10; ++j)
+ ;
+ }
+ }
+}
OpenPOWER on IntegriCloud