diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2015-11-26 07:50:39 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2015-11-26 07:50:39 +0000 |
commit | 7b6bc88c5aaf2e3db7dad2d9876d6eee1cc9476c (patch) | |
tree | 7664de8efde365a5c44fa93c6419733a74042b4d /clang/test/OpenMP/for_ordered_clause.cpp | |
parent | ed865dfcc50d5248dbbb055c8859ebf6a15f3bc8 (diff) | |
download | bcm5719-llvm-7b6bc88c5aaf2e3db7dad2d9876d6eee1cc9476c.tar.gz bcm5719-llvm-7b6bc88c5aaf2e3db7dad2d9876d6eee1cc9476c.zip |
[OPENMP 4.5] Fixed rules for 'ordered' clause.
According to OpenMP 4.5 the parameter of 'ordered' clause must be greater than or equal to the parameter of 'collapse' clause. Patch adds this rule.
llvm-svn: 254141
Diffstat (limited to 'clang/test/OpenMP/for_ordered_clause.cpp')
-rw-r--r-- | clang/test/OpenMP/for_ordered_clause.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/test/OpenMP/for_ordered_clause.cpp b/clang/test/OpenMP/for_ordered_clause.cpp index 5b080215873..f28731e4770 100644 --- a/clang/test/OpenMP/for_ordered_clause.cpp +++ b/clang/test/OpenMP/for_ordered_clause.cpp @@ -52,11 +52,19 @@ T tmain(T argc, S **argv) { //expected-note 2 {{declared here} #pragma omp for ordered(1) for (int i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i - ST]; +#pragma omp for ordered(N-1) // expected-error 2 {{argument to 'ordered' clause must be a positive integer value}} + for (int i = ST; i < N; i++) + argv[0][i] = argv[0][i] - argv[0][i - ST]; #pragma omp for ordered(N) // expected-error {{argument to 'ordered' clause must be a positive integer value}} for (T i = ST; i < N; i++) argv[0][i] = argv[0][i] - argv[0][i - ST]; #pragma omp for ordered(2) // expected-note {{as specified in 'ordered' clause}} foo(); // expected-error {{expected 2 for loops after '#pragma omp for'}} +#pragma omp for ordered(N) collapse(N + 2) // expected-error {{the parameter of the 'ordered' clause must be greater than or equal to the parameter of the 'collapse' clause}} expected-note {{parameter of the 'collapse' clause}} expected-error {{argument to 'ordered' clause must be a positive integer value}} + for (int i = ST; i < N; i++) + for (int j = ST; j < N; j++) + for (int k = ST; k < N; k++) + foo(); return argc; } @@ -98,6 +106,14 @@ int main(int argc, char **argv) { foo(); #pragma omp for ordered(2) // expected-note {{as specified in 'ordered' clause}} foo(); // expected-error {{expected 2 for loops after '#pragma omp for'}} +#pragma omp for ordered(0) // expected-error {{argument to 'ordered' clause must be a positive integer value}} + for (int i = 4; i < 12; i++) + argv[0][i] = argv[0][i] - argv[0][i - 4]; +#pragma omp for ordered(2) collapse(3) // expected-error {{the parameter of the 'ordered' clause must be greater than or equal to the parameter of the 'collapse' clause}} expected-note {{parameter of the 'collapse' clause}} + for (int i = 0; i < 10; i++) + for (int j = 0; j < 11; j++) + for (int k = 0; k < 12; k++) + foo(); // expected-note@+1 {{in instantiation of function template specialization 'tmain<int, char, 1, 0>' requested here}} return tmain<int, char, 1, 0>(argc, argv); } |