1*532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -verify -fopenmp -x c++ -triple powerpc64le-unknown-linux -S -emit-llvm %s -o - -std=c++11 2>&1 | FileCheck %s 2*532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -verify -fopenmp -x c++ -fopenmp-targets=x86_64-pc-linux-gnu -triple powerpc64le-unknown-linux -S -emit-llvm %s -o - -std=c++11 2>&1 | FileCheck %s 37c860698SAlexey Bataev // expected-no-diagnostics 47c860698SAlexey Bataev 57c860698SAlexey Bataev template <int __v> struct integral_constant { 67c860698SAlexey Bataev static constexpr int value = __v; 77c860698SAlexey Bataev }; 87c860698SAlexey Bataev 97c860698SAlexey Bataev template <typename _Tp, int v = 0, bool _IsArray = integral_constant<v>::value> 107c860698SAlexey Bataev struct decay { 117c860698SAlexey Bataev typedef int type; 127c860698SAlexey Bataev }; 137c860698SAlexey Bataev struct V { 147c860698SAlexey Bataev template <typename TArg0 = int, typename = typename decay<TArg0>::type> V(); 157c860698SAlexey Bataev }; 165285748cSJennifer Yu 175285748cSJennifer Yu constexpr double h_chebyshev_coefs[] = { 185285748cSJennifer Yu 1.0000020784639703, 0.0021491446496202074}; 195285748cSJennifer Yu test(double * d_value)205285748cSJennifer Yuvoid test(double *d_value) 215285748cSJennifer Yu { 225285748cSJennifer Yu #pragma omp target map(tofrom \ 235285748cSJennifer Yu : d_value [0:1]) map(always, to \ 245285748cSJennifer Yu : h_chebyshev_coefs [0:2]) 255285748cSJennifer Yu *d_value = h_chebyshev_coefs[1]; return; 265285748cSJennifer Yu } 275285748cSJennifer Yu 285285748cSJennifer Yu // CHECK: void @__omp_offloading_{{.+}}test{{.+}}(double* %0) 295285748cSJennifer Yu main()307c860698SAlexey Bataevint main() { 317c860698SAlexey Bataev #pragma omp target 327c860698SAlexey Bataev V v; 337c860698SAlexey Bataev return 0; 347c860698SAlexey Bataev } 357c860698SAlexey Bataev 365285748cSJennifer Yu // CHECK: call void @__omp_offloading_{{.+}}_main_{{.+}}() 37