1*7c860698SAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp -x c++ -triple powerpc64le-unknown-linux -S -emit-llvm %s -o - -std=c++11 2>&1 | FileCheck %s
2*7c860698SAlexey Bataev // expected-no-diagnostics
3*7c860698SAlexey Bataev 
4*7c860698SAlexey Bataev template <int __v> struct integral_constant {
5*7c860698SAlexey Bataev   static constexpr int value = __v;
6*7c860698SAlexey Bataev };
7*7c860698SAlexey Bataev 
8*7c860698SAlexey Bataev template <typename _Tp, int v = 0, bool _IsArray = integral_constant<v>::value>
9*7c860698SAlexey Bataev struct decay {
10*7c860698SAlexey Bataev   typedef int type;
11*7c860698SAlexey Bataev };
12*7c860698SAlexey Bataev struct V {
13*7c860698SAlexey Bataev   template <typename TArg0 = int, typename = typename decay<TArg0>::type> V();
14*7c860698SAlexey Bataev };
15*7c860698SAlexey Bataev int main() {
16*7c860698SAlexey Bataev #pragma omp target
17*7c860698SAlexey Bataev   V v;
18*7c860698SAlexey Bataev   return 0;
19*7c860698SAlexey Bataev }
20*7c860698SAlexey Bataev 
21*7c860698SAlexey Bataev // CHECK: call void @__omp_offloading_{{.+}}_main_l16()
22