diff options
Diffstat (limited to 'test/OpenMP/task_ast_print.cpp')
-rw-r--r-- | test/OpenMP/task_ast_print.cpp | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/test/OpenMP/task_ast_print.cpp b/test/OpenMP/task_ast_print.cpp index 9a7d64ee5462..54c05d8ed410 100644 --- a/test/OpenMP/task_ast_print.cpp +++ b/test/OpenMP/task_ast_print.cpp @@ -13,17 +13,19 @@ struct S1 { S1(int v) : a(v) {} int a; typedef int type; + S1 operator +(const S1&); }; template <typename T> class S7 : public T { protected: - T a; + T a, b; S7() : a(0) {} public: S7(typename T::type v) : a(v) { -#pragma omp task private(a) private(this->a) private(T::a) +#pragma omp taskgroup task_reduction(+:b) +#pragma omp task private(a) private(this->a) private(T::a) in_reduction(+:this->b) for (int k = 0; k < a.a; ++k) ++this->a.a; } @@ -35,7 +37,8 @@ public: } }; -// CHECK: #pragma omp task private(this->a) private(this->a) private(T::a) +// CHECK: #pragma omp taskgroup task_reduction(+: this->b) +// CHECK: #pragma omp task private(this->a) private(this->a) private(T::a) in_reduction(+: this->b) // CHECK: #pragma omp task private(this->a) private(this->a) // CHECK: #pragma omp task private(this->a) private(this->a) private(this->S1::a) @@ -89,7 +92,8 @@ T tmain(T argc, T *argv) { a = 2; #pragma omp task default(none), private(argc, b) firstprivate(argv) shared(d) if (argc > 0) final(S<T>::TS > 0) priority(argc) foo(); -#pragma omp task if (C) mergeable priority(C) +#pragma omp taskgroup task_reduction(-: argc) +#pragma omp task if (C) mergeable priority(C) in_reduction(-: argc) foo(); return 0; } @@ -103,7 +107,8 @@ T tmain(T argc, T *argv) { // CHECK-NEXT: a = 2; // CHECK-NEXT: #pragma omp task default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) final(S<T>::TS > 0) priority(argc) // CHECK-NEXT: foo() -// CHECK-NEXT: #pragma omp task if(C) mergeable priority(C) +// CHECK-NEXT: #pragma omp taskgroup task_reduction(-: argc) +// CHECK-NEXT: #pragma omp task if(C) mergeable priority(C) in_reduction(-: argc) // CHECK-NEXT: foo() // CHECK: template<> int tmain<int, 5>(int argc, int *argv) { // CHECK-NEXT: int b = argc, c, d, e, f, g; @@ -114,7 +119,8 @@ T tmain(T argc, T *argv) { // CHECK-NEXT: a = 2; // CHECK-NEXT: #pragma omp task default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) final(S<int>::TS > 0) priority(argc) // CHECK-NEXT: foo() -// CHECK-NEXT: #pragma omp task if(5) mergeable priority(5) +// CHECK-NEXT: #pragma omp taskgroup task_reduction(-: argc) +// CHECK-NEXT: #pragma omp task if(5) mergeable priority(5) in_reduction(-: argc) // CHECK-NEXT: foo() // CHECK: template<> long tmain<long, 1>(long argc, long *argv) { // CHECK-NEXT: long b = argc, c, d, e, f, g; @@ -125,7 +131,8 @@ T tmain(T argc, T *argv) { // CHECK-NEXT: a = 2; // CHECK-NEXT: #pragma omp task default(none) private(argc,b) firstprivate(argv) shared(d) if(argc > 0) final(S<long>::TS > 0) priority(argc) // CHECK-NEXT: foo() -// CHECK-NEXT: #pragma omp task if(1) mergeable priority(1) +// CHECK-NEXT: #pragma omp taskgroup task_reduction(-: argc) +// CHECK-NEXT: #pragma omp task if(1) mergeable priority(1) in_reduction(-: argc) // CHECK-NEXT: foo() enum Enum {}; @@ -134,7 +141,7 @@ int main(int argc, char **argv) { long x; int b = argc, c, d, e, f, g; static int a; - int arr[10]; + int arr[10], arr1[argc]; #pragma omp threadprivate(a) Enum ee; // CHECK: Enum ee; @@ -142,8 +149,18 @@ int main(int argc, char **argv) { // CHECK-NEXT: #pragma omp task untied mergeable depend(out : argv[:a][1],(arr)[0:]) if(task: argc > 0) priority(f) a = 2; // CHECK-NEXT: a = 2; -#pragma omp task default(none), private(argc, b) firstprivate(argv) if (argc > 0) final(a > 0) depend(inout : a, argv[:argc],arr[:a]) priority(23) - // CHECK-NEXT: #pragma omp task default(none) private(argc,b) firstprivate(argv) if(argc > 0) final(a > 0) depend(inout : a,argv[:argc],arr[:a]) priority(23) +#pragma omp taskgroup task_reduction(min: arr1) +#pragma omp task default(none), private(argc, b) firstprivate(argv) if (argc > 0) final(a > 0) depend(inout : a, argv[:argc],arr[:a]) priority(23) in_reduction(min: arr1) + // CHECK-NEXT: #pragma omp taskgroup task_reduction(min: arr1) + // CHECK-NEXT: #pragma omp task default(none) private(argc,b) firstprivate(argv) if(argc > 0) final(a > 0) depend(inout : a,argv[:argc],arr[:a]) priority(23) in_reduction(min: arr1) + foo(); + // CHECK-NEXT: foo(); +#pragma omp taskgroup task_reduction(min: arr1) +#pragma omp parallel reduction(+:arr1) +#pragma omp task in_reduction(min: arr1) + // CHECK-NEXT: #pragma omp taskgroup task_reduction(min: arr1) + // CHECK-NEXT: #pragma omp parallel reduction(+: arr1) + // CHECK-NEXT: #pragma omp task in_reduction(min: arr1) foo(); // CHECK-NEXT: foo(); return tmain<int, 5>(b, &b) + tmain<long, 1>(x, &x); |