xref: /llvm-project/clang/test/CodeGenCXX/mangle-lambdas-gh88906.cpp (revision 64cc3fad53c8313ad2fb3f2ba2fd44f280e5babf)
1 // RUN: %clang_cc1 -triple x86_64-linux-gnu %s -emit-llvm -mconstructor-aliases -o - | FileCheck %s
2 // RUN: %clang_cc1 -triple x86_64-linux-gnu -fclang-abi-compat=18 %s -emit-llvm -mconstructor-aliases  -o - | FileCheck --check-prefix=CLANG18 %s
3 // RUN: %clang_cc1 -triple i386-pc-win32 %s -emit-llvm -mconstructor-aliases -o - | FileCheck --check-prefix=MSABI %s
4 
5 
6 class func {
7 public:
8     template <typename T>
func(T)9     func(T){};
10     template <typename T, typename U>
func(T,U)11     func(T, U){};
12 };
13 
GH88906()14 void GH88906(){
15   class Test{
16     public:
17     func a{[]{ }, []{ }};
18     func b{[]{ }};
19     func c{[]{ }};
20   } test;
21 }
22 
23 // CHECK-LABEL: define internal void @_ZZ7GH88906vEN4TestC2Ev
24 // CHECK: call void @_ZN4funcC2IN7GH889064Test1aMUlvE_ENS3_UlvE0_EEET_T0_
25 // CHECK: call void @_ZN4funcC2IN7GH889064Test1bMUlvE_EEET_
26 // CHECK: call void @_ZN4funcC2IN7GH889064Test1cMUlvE_EEET_
27 
28 // CHECK-LABEL: define internal void @_ZN4funcC2IN7GH889064Test1aMUlvE_ENS3_UlvE0_EEET_T0_
29 // CHECK-LABEL: define internal void @_ZN4funcC2IN7GH889064Test1bMUlvE_EEET_
30 // CHECK-LABEL: define internal void @_ZN4funcC2IN7GH889064Test1cMUlvE_EEET_
31 
32 // CLANG18-LABEL: define internal void @_ZZ7GH88906vEN4TestC2Ev
33 // CLANG18: call void @_ZN4funcC2IZ7GH88906vEN4TestUlvE_EZ7GH88906vENS1_UlvE0_EEET_T0_
34 // CLANG18: call void @_ZN4funcC2IZ7GH88906vEN4TestUlvE_EEET_
35 // CLANG18: call void @_ZN4funcC2IZ7GH88906vEN4TestUlvE_EEET_
36 
37 
38 
39 // MSABI-LABEL: define internal x86_thiscallcc noundef ptr @"??0Test@?1??GH88906@@YAXXZ@QAE@XZ"
40 // MSABI: call x86_thiscallcc noundef ptr @"??$?0V<lambda_1>@a@Test@?1??GH88906@@YAXXZ@V<lambda_2>@12?1??3@YAXXZ@@func@@QAE@V<lambda_1>@a@Test@?1??GH88906@@YAXXZ@V<lambda_2>@23?1??4@YAXXZ@@Z"
41 // MSABI: call x86_thiscallcc noundef ptr @"??$?0V<lambda_1>@b@Test@?1??GH88906@@YAXXZ@@func@@QAE@V<lambda_1>@b@Test@?1??GH88906@@YAXXZ@@Z"
42 // MSABI: call x86_thiscallcc noundef ptr @"??$?0V<lambda_1>@c@Test@?1??GH88906@@YAXXZ@@func@@QAE@V<lambda_1>@c@Test@?1??GH88906@@YAXXZ@@Z"
43 
44 // MSABI-LABEL: define internal x86_thiscallcc noundef ptr @"??$?0V<lambda_1>@a@Test@?1??GH88906@@YAXXZ@V<lambda_2>@12?1??3@YAXXZ@@func@@QAE@V<lambda_1>@a@Test@?1??GH88906@@YAXXZ@V<lambda_2>@23?1??4@YAXXZ@@Z"
45 // MSABI-LABEL: define internal x86_thiscallcc noundef ptr @"??$?0V<lambda_1>@b@Test@?1??GH88906@@YAXXZ@@func@@QAE@V<lambda_1>@b@Test@?1??GH88906@@YAXXZ@@Z"
46 // MSABI-LABEL: define internal x86_thiscallcc noundef ptr @"??$?0V<lambda_1>@c@Test@?1??GH88906@@YAXXZ@@func@@QAE@V<lambda_1>@c@Test@?1??GH88906@@YAXXZ@@Z"
47