diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:44:14 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:44:14 +0000 |
commit | 2b6b257f4e5503a7a2675bdb8735693db769f75c (patch) | |
tree | e85e046ae7003fe3bcc8b5454cd0fa3f7407b470 /test/OpenMP/single_ast_print.cpp | |
parent | b4348ed0b7e90c0831b925fbee00b5f179a99796 (diff) | |
download | src-2b6b257f4e5503a7a2675bdb8735693db769f75c.tar.gz src-2b6b257f4e5503a7a2675bdb8735693db769f75c.zip |
Vendor import of clang release_39 branch r276489:vendor/clang/clang-release_39-r276489
Notes
Notes:
svn path=/vendor/clang/dist/; revision=303233
svn path=/vendor/clang/clang-release_39-r276489/; revision=303234; tag=vendor/clang/clang-release_39-r276489
Diffstat (limited to 'test/OpenMP/single_ast_print.cpp')
-rw-r--r-- | test/OpenMP/single_ast_print.cpp | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/test/OpenMP/single_ast_print.cpp b/test/OpenMP/single_ast_print.cpp index 8eb35174a77f..d30b7feb02c5 100644 --- a/test/OpenMP/single_ast_print.cpp +++ b/test/OpenMP/single_ast_print.cpp @@ -8,15 +8,43 @@ void foo() {} +struct SS { + int a; + int b : 4; + int &c; + SS(int &d) : a(0), b(0), c(d) { +#pragma omp parallel firstprivate(a, b, c) +#pragma omp single copyprivate(a, this->b, (this)->c) +// CHECK: #pragma omp parallel firstprivate(this->a,this->b,this->c) +// CHECK-NEXT: #pragma omp single copyprivate(this->a,this->b,this->c) + ++this->a, --b, (this)->c /= 1; + } +}; + +template<typename T> +struct SST { + T a; + SST() : a(T()) { +// CHECK: #pragma omp parallel firstprivate(this->a) +// CHECK-NEXT: #pragma omp single copyprivate(this->a) +// CHECK: #pragma omp parallel firstprivate(this->a) +// CHECK-NEXT: #pragma omp single copyprivate(this->a) +#pragma omp parallel firstprivate(a) +#pragma omp single copyprivate(this->a) + ++this->a; + } +}; + template <class T, int N> T tmain(T argc) { T b = argc, c, d, e, f, g; static T a; + SST<T> sst; // CHECK: static T a; #pragma omp parallel private(g) #pragma omp single private(argc, b), firstprivate(c, d), nowait foo(); - // CHECK-NEXT: #pragma omp parallel private(g) + // CHECK: #pragma omp parallel private(g) // CHECK-NEXT: #pragma omp single private(argc,b) firstprivate(c,d) nowait // CHECK-NEXT: foo(); #pragma omp parallel private(g) @@ -31,11 +59,12 @@ T tmain(T argc) { int main(int argc, char **argv) { int b = argc, c, d, e, f, g; static int a; + SS ss(a); // CHECK: static int a; #pragma omp parallel private(g) #pragma omp single private(argc, b), firstprivate(argv, c), nowait foo(); - // CHECK-NEXT: #pragma omp parallel private(g) + // CHECK: #pragma omp parallel private(g) // CHECK-NEXT: #pragma omp single private(argc,b) firstprivate(argv,c) nowait // CHECK-NEXT: foo(); #pragma omp parallel private(g) |