diff options
Diffstat (limited to 'test/OpenMP/target_ast_print.cpp')
-rw-r--r-- | test/OpenMP/target_ast_print.cpp | 111 |
1 files changed, 109 insertions, 2 deletions
diff --git a/test/OpenMP/target_ast_print.cpp b/test/OpenMP/target_ast_print.cpp index 827d6a4e3deb4..9b866b789a75c 100644 --- a/test/OpenMP/target_ast_print.cpp +++ b/test/OpenMP/target_ast_print.cpp @@ -14,7 +14,7 @@ void foo() {} template <typename T, int C> T tmain(T argc, T *argv) { - T i, j, a[20], always; + T i, j, a[20], always, close; #pragma omp target foo(); #pragma omp target if (target:argc > 0) @@ -35,6 +35,14 @@ T tmain(T argc, T *argv) { {always++;} #pragma omp target map(always,i) {always++;i++;} +#pragma omp target map(close,alloc: i) + foo(); +#pragma omp target map(close from: i) + foo(); +#pragma omp target map(close) + {close++;} +#pragma omp target map(close,i) + {close++;i++;} #pragma omp target nowait foo(); #pragma omp target depend(in : argc, argv[i:argc], a[:]) @@ -71,6 +79,19 @@ T tmain(T argc, T *argv) { // CHECK-NEXT: always++; // CHECK-NEXT: i++; // CHECK-NEXT: } +// CHECK-NEXT: #pragma omp target map(close,alloc: i) +// CHECK-NEXT: foo() +// CHECK-NEXT: #pragma omp target map(close,from: i) +// CHECK-NEXT: foo() +// CHECK-NEXT: #pragma omp target map(tofrom: close) +// CHECK-NEXT: { +// CHECK-NEXT: close++; +// CHECK-NEXT: } +// CHECK-NEXT: #pragma omp target map(tofrom: close,i) +// CHECK-NEXT: { +// CHECK-NEXT: close++; +// CHECK-NEXT: i++; +// CHECK-NEXT: } // CHECK-NEXT: #pragma omp target nowait // CHECK-NEXT: foo() // CHECK-NEXT: #pragma omp target depend(in : argc,argv[i:argc],a[:]) @@ -104,6 +125,19 @@ T tmain(T argc, T *argv) { // CHECK-NEXT: always++; // CHECK-NEXT: i++; // CHECK-NEXT: } +// CHECK-NEXT: #pragma omp target map(close,alloc: i) +// CHECK-NEXT: foo() +// CHECK-NEXT: #pragma omp target map(close,from: i) +// CHECK-NEXT: foo() +// CHECK-NEXT: #pragma omp target map(tofrom: close) +// CHECK-NEXT: { +// CHECK-NEXT: close++; +// CHECK-NEXT: } +// CHECK-NEXT: #pragma omp target map(tofrom: close,i) +// CHECK-NEXT: { +// CHECK-NEXT: close++; +// CHECK-NEXT: i++; +// CHECK-NEXT: } // CHECK-NEXT: #pragma omp target nowait // CHECK-NEXT: foo() // CHECK-NEXT: #pragma omp target depend(in : argc,argv[i:argc],a[:]) @@ -137,6 +171,19 @@ T tmain(T argc, T *argv) { // CHECK-NEXT: always++; // CHECK-NEXT: i++; // CHECK-NEXT: } +// CHECK-NEXT: #pragma omp target map(close,alloc: i) +// CHECK-NEXT: foo() +// CHECK-NEXT: #pragma omp target map(close,from: i) +// CHECK-NEXT: foo() +// CHECK-NEXT: #pragma omp target map(tofrom: close) +// CHECK-NEXT: { +// CHECK-NEXT: close++; +// CHECK-NEXT: } +// CHECK-NEXT: #pragma omp target map(tofrom: close,i) +// CHECK-NEXT: { +// CHECK-NEXT: close++; +// CHECK-NEXT: i++; +// CHECK-NEXT: } // CHECK-NEXT: #pragma omp target nowait // CHECK-NEXT: foo() // CHECK-NEXT: #pragma omp target depend(in : argc,argv[i:argc],a[:]) @@ -144,9 +191,44 @@ T tmain(T argc, T *argv) { // CHECK-NEXT: #pragma omp target defaultmap(tofrom: scalar) // CHECK-NEXT: foo() +// CHECK-LABEL: class S { +class S { + void foo() { +// CHECK-NEXT: void foo() { + int a = 0; +// CHECK-NEXT: int a = 0; + #pragma omp target map(this[0]) +// CHECK-NEXT: #pragma omp target map(tofrom: this[0]) + a++; +// CHECK-NEXT: a++; + #pragma omp target map(this[:1]) +// CHECK-NEXT: #pragma omp target map(tofrom: this[:1]) + a++; +// CHECK-NEXT: a++; + #pragma omp target map((this)[0]) +// CHECK-NEXT: #pragma omp target map(tofrom: (this)[0]) + a++; +// CHECK-NEXT: a++; + #pragma omp target map(this[:a]) +// CHECK-NEXT: #pragma omp target map(tofrom: this[:a]) + a++; +// CHECK-NEXT: a++; + #pragma omp target map(this[a:1]) +// CHECK-NEXT: #pragma omp target map(tofrom: this[a:1]) + a++; +// CHECK-NEXT: a++; + #pragma omp target map(this[a]) +// CHECK-NEXT: #pragma omp target map(tofrom: this[a]) + a++; +// CHECK-NEXT: a++; + } +// CHECK-NEXT: } +}; +// CHECK-NEXT: }; + // CHECK-LABEL: int main(int argc, char **argv) { int main (int argc, char **argv) { - int i, j, a[20], always; + int i, j, a[20], always, close; // CHECK-NEXT: int i, j, a[20] #pragma omp target // CHECK-NEXT: #pragma omp target @@ -202,6 +284,31 @@ int main (int argc, char **argv) { // CHECK-NEXT: i++; // CHECK-NEXT: } +#pragma omp target map(close,alloc: i) +// CHECK-NEXT: #pragma omp target map(close,alloc: i) + foo(); +// CHECK-NEXT: foo(); + +#pragma omp target map(close from: i) +// CHECK-NEXT: #pragma omp target map(close,from: i) + foo(); +// CHECK-NEXT: foo(); + +#pragma omp target map(close) +// CHECK-NEXT: #pragma omp target map(tofrom: close) + {close++;} +// CHECK-NEXT: { +// CHECK-NEXT: close++; +// CHECK-NEXT: } + +#pragma omp target map(close,i) +// CHECK-NEXT: #pragma omp target map(tofrom: close,i) + {close++;i++;} +// CHECK-NEXT: { +// CHECK-NEXT: close++; +// CHECK-NEXT: i++; +// CHECK-NEXT: } + #pragma omp target nowait // CHECK-NEXT: #pragma omp target nowait foo(); |