1 // RxUN: %clang_cc1 -verify -fopenmp -std=c++11 -ast-print %s | FileCheck %s
2 // RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s
3 // RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s
4 // expected-no-diagnostics
17 #pragma omp target data map(tofrom: i) use_device_ptr(k)
19 #pragma omp target data map(tofrom: i) use_device_ptr(z)
26 // CHECK: #pragma omp target data map(tofrom: this->i) use_device_ptr(this->k)
27 // CHECK: #pragma omp target data map(tofrom: this->i) use_device_ptr(this->z)
50 SC(SB *&_RPtrS) : RPtrS(_RPtrS) {}
64 S2(S2 &s2):a(s2.a) { }
66 static const float S2sc;
68 const float S2::S2sc = 0;
75 S3(S3 &s3):a(s3.a) { }
90 S5(const S5 &s5):a(s5.a) { }
96 #pragma omp threadprivate(h)
100 template <typename T>
106 #pragma omp target data map(tofrom: i) use_device_ptr(k)
108 #pragma omp target data map(tofrom: i) use_device_ptr(z)
113 // CHECK: template<> int tmain<int>(int argc) {
114 // CHECK-NEXT: int i;
115 // CHECK-NEXT: int &j = i;
116 // CHECK-NEXT: int *k = &j;
117 // CHECK-NEXT: int *&z = k;
118 // CHECK-NEXT: #pragma omp target data map(tofrom: i) use_device_ptr(k)
121 // CHECK-NEXT: #pragma omp target data map(tofrom: i) use_device_ptr(z)
123 // CHECK: template<> int *tmain<int *>(int *argc) {
124 // CHECK-NEXT: int *i;
125 // CHECK-NEXT: int *&j = i;
126 // CHECK-NEXT: int **k = &j;
127 // CHECK-NEXT: int **&z = k;
128 // CHECK-NEXT: #pragma omp target data map(tofrom: i) use_device_ptr(k)
131 // CHECK-NEXT: #pragma omp target data map(tofrom: i) use_device_ptr(z)
133 // CHECK-LABEL: int main(int argc, char **argv) {
134 int main(int argc, char **argv) {
139 // CHECK-NEXT: int i;
140 // CHECK-NEXT: int &j = i;
141 // CHECK-NEXT: int *k = &j;
142 // CHECK-NEXT: int *&z = k;
143 #pragma omp target data map(tofrom: i) use_device_ptr(k)
144 // CHECK-NEXT: #pragma omp target data map(tofrom: i) use_device_ptr(k)
148 #pragma omp target data map(tofrom: i) use_device_ptr(z)
149 // CHECK-NEXT: #pragma omp target data map(tofrom: i) use_device_ptr(z)
151 return tmain<int>(argc) + (*tmain<int*>(&argc));