diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2014-03-06 06:15:19 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2014-03-06 06:15:19 +0000 |
commit | a3eb9f5811b85ce1b5158ad6691ea0a61dbb247d (patch) | |
tree | 3b27a662d7aa9a536e2a26d6efab324b0ff43cf2 /test/OpenMP/parallel_ast_print.cpp | |
parent | 4084bb9da5b07d9a074e1cfec8279daa4d61ab56 (diff) | |
download | clang-a3eb9f5811b85ce1b5158ad6691ea0a61dbb247d.tar.gz clang-a3eb9f5811b85ce1b5158ad6691ea0a61dbb247d.tar.bz2 clang-a3eb9f5811b85ce1b5158ad6691ea0a61dbb247d.tar.xz |
[OPENMP] Clause 'num_threads'
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203087 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/OpenMP/parallel_ast_print.cpp')
-rw-r--r-- | test/OpenMP/parallel_ast_print.cpp | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/test/OpenMP/parallel_ast_print.cpp b/test/OpenMP/parallel_ast_print.cpp index bd5171435e..beb29ec15a 100644 --- a/test/OpenMP/parallel_ast_print.cpp +++ b/test/OpenMP/parallel_ast_print.cpp @@ -8,61 +8,72 @@ void foo() {} +template <class T> +struct S { + operator T() {return T();} +}; template <typename T, int C> T tmain(T argc, T *argv) { T b = argc, c, d, e, f, g; static T a; + S<T> s; #pragma omp parallel a=2; -#pragma omp parallel default(none), private(argc,b) firstprivate(argv) shared (d) if (argc > 0) +#pragma omp parallel default(none), private(argc,b) firstprivate(argv) shared (d) if (argc > 0) num_threads(C) foo(); -#pragma omp parallel if (C) +#pragma omp parallel if (C) num_threads(s) foo(); return 0; } -// CHECK: template <typename T = int, int C = 2> int tmain(int argc, int *argv) { +// CHECK: template <typename T = int, int C = 5> int tmain(int argc, int *argv) { // CHECK-NEXT: int b = argc, c, d, e, f, g; // CHECK-NEXT: static int a; +// CHECK-NEXT: S<int> s; // CHECK-NEXT: #pragma omp parallel // CHECK-NEXT: a = 2; -// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) +// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) num_threads(5) // CHECK-NEXT: foo() -// CHECK-NEXT: #pragma omp parallel if(2) +// CHECK-NEXT: #pragma omp parallel if(5) num_threads(s) // CHECK-NEXT: foo() -// CHECK: template <typename T = float, int C = 0> float tmain(float argc, float *argv) { -// CHECK-NEXT: float b = argc, c, d, e, f, g; -// CHECK-NEXT: static float a; +// CHECK: template <typename T = long, int C = 1> long tmain(long argc, long *argv) { +// CHECK-NEXT: long b = argc, c, d, e, f, g; +// CHECK-NEXT: static long a; +// CHECK-NEXT: S<long> s; // CHECK-NEXT: #pragma omp parallel // CHECK-NEXT: a = 2; -// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) +// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) num_threads(1) // CHECK-NEXT: foo() -// CHECK-NEXT: #pragma omp parallel if(0) +// CHECK-NEXT: #pragma omp parallel if(1) num_threads(s) // CHECK-NEXT: foo() // CHECK: template <typename T, int C> T tmain(T argc, T *argv) { // CHECK-NEXT: T b = argc, c, d, e, f, g; // CHECK-NEXT: static T a; +// CHECK-NEXT: S<T> s; // CHECK-NEXT: #pragma omp parallel // CHECK-NEXT: a = 2; -// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) +// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) num_threads(C) // CHECK-NEXT: foo() -// CHECK-NEXT: #pragma omp parallel if(C) +// CHECK-NEXT: #pragma omp parallel if(C) num_threads(s) // CHECK-NEXT: foo() +enum Enum { }; + int main (int argc, char **argv) { - float x; + long x; int b = argc, c, d, e, f, g; static int a; -// CHECK: static int a; + Enum ee; +// CHECK: Enum ee; #pragma omp parallel // CHECK-NEXT: #pragma omp parallel a=2; // CHECK-NEXT: a = 2; -#pragma omp parallel default(none), private(argc,b) firstprivate(argv) if (argc > 0) -// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) if(argc > 0) +#pragma omp parallel default(none), private(argc,b) firstprivate(argv) if (argc > 0) num_threads(ee) +// CHECK-NEXT: #pragma omp parallel default(none) private(argc,b) firstprivate(argv) if(argc > 0) num_threads(ee) foo(); // CHECK-NEXT: foo(); - return tmain<int, 2>(b, &b) + tmain<float, 0>(x, &x); + return tmain<int, 5>(b, &b) + tmain<long, 1>(x, &x); } #endif |