1532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -verify -fopenmp -fopenmp-version=45 -x c++ -std=c++11 -triple powerpc64le-ibm-linux-gnu -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s
2a8a9153aSAlexey Bataev 
3532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -verify -fopenmp-simd -fopenmp-version=45 -x c++ -std=c++11 -triple powerpc64le-ibm-linux-gnu -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY0 %s
4a8a9153aSAlexey Bataev // SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
5eaa341fbSSaiyedul Islam 
6532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -verify -fopenmp -x c++ -std=c++11 -triple powerpc64le-ibm-linux-gnu -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s
7eaa341fbSSaiyedul Islam 
8532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -verify -fopenmp-simd -x c++ -std=c++11 -triple powerpc64le-ibm-linux-gnu -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY0 %s
9eaa341fbSSaiyedul Islam // SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
10eaa341fbSSaiyedul Islam 
114b46539eSAlexey Bataev // expected-no-diagnostics
124b46539eSAlexey Bataev 
134b46539eSAlexey Bataev template <typename T1, typename T2>
144b46539eSAlexey Bataev struct pair {
154b46539eSAlexey Bataev   T1 t1;
164b46539eSAlexey Bataev   T2 t2;
pairpair174b46539eSAlexey Bataev   pair(T1 t1, T2 t2) : t1(t1), t2(t2) {}
184b46539eSAlexey Bataev };
194b46539eSAlexey Bataev 
204b46539eSAlexey Bataev template <typename T1, typename T2>
make_pair(T1 && t1,T2 && t2)214b46539eSAlexey Bataev pair<T1, T2> make_pair(T1 &&t1, T2 &&t2) {
224b46539eSAlexey Bataev   return {t1, t2};
234b46539eSAlexey Bataev }
244b46539eSAlexey Bataev 
254b46539eSAlexey Bataev // CHECK-LABEL: @main
main(int argc,char ** argv)264b46539eSAlexey Bataev int main(int argc, char **argv) {
27*1fff1166SJoseph Huber // CHECK: call i32 @__tgt_target_kernel(%struct.ident_t* @{{.+}}, i64 -1, i32 -1, i32 0, i8* @{{.+}}.region_id, %struct.__tgt_kernel_arguments* %{{.+}})
284b46539eSAlexey Bataev #pragma omp target
294b46539eSAlexey Bataev  {
304b46539eSAlexey Bataev     for (int i = 0; i < 64; ++i) {
314b46539eSAlexey Bataev       for (int j = 0; j < 64; ++j) {
324b46539eSAlexey Bataev         auto foo = make_pair(i * i, j * j);
334b46539eSAlexey Bataev       }
344b46539eSAlexey Bataev     }
354b46539eSAlexey Bataev   }
364b46539eSAlexey Bataev   return 0;
374b46539eSAlexey Bataev }
384b46539eSAlexey Bataev 
394b46539eSAlexey Bataev // CHECK: call {{.+}} @{{.*}}make_pair
40