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 Yu void 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 Bataev int 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