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