1*67e74705SXin Li // RUN: %clang_cc1 -triple i686-windows-msvc -emit-llvm -std=c++11 -o - %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li // Make sure that we emit H's constructor twice: once with the first lambda 4*67e74705SXin Li // inside of 'lep' and again with the second lambda inside of 'lep'. 5*67e74705SXin Li // CHECK-DAG: @"\01??0?$H@V<lambda_1>@?0???$lep@X@@YAXXZ@@@QAE@XZ" 6*67e74705SXin Li // CHECK-DAG: @"\01??0?$H@V<lambda_2>@?0???$lep@X@@YAXXZ@@@QAE@XZ" 7*67e74705SXin Li 8*67e74705SXin Li template <typename> 9*67e74705SXin Li struct H { HH10*67e74705SXin Li H() {} 11*67e74705SXin Li }; 12*67e74705SXin Li 13*67e74705SXin Li template <typename Fx> K_void(const Fx &)14*67e74705SXin Liint K_void(const Fx &) { 15*67e74705SXin Li H<Fx> callee; 16*67e74705SXin Li return 0; 17*67e74705SXin Li } 18*67e74705SXin Li template <typename Fx> K_int(const Fx &)19*67e74705SXin Liint K_int(const Fx &) { 20*67e74705SXin Li H<Fx> callee; 21*67e74705SXin Li return 0; 22*67e74705SXin Li } 23*67e74705SXin Li 24*67e74705SXin Li struct pair { 25*67e74705SXin Li pair(int, int); 26*67e74705SXin Li }; 27*67e74705SXin Li 28*67e74705SXin Li struct E1; 29*67e74705SXin Li 30*67e74705SXin Li template <typename> lep()31*67e74705SXin Livoid lep() { 32*67e74705SXin Li pair x(K_void([] {}), K_int([] {})); 33*67e74705SXin Li } 34*67e74705SXin Li 35*67e74705SXin Li auto z = lep<void>; 36