diff options
Diffstat (limited to 'clang/test/OpenMP/for_collapse_messages.cpp')
-rw-r--r-- | clang/test/OpenMP/for_collapse_messages.cpp | 56 |
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) + ; + } + } +} |