[ThinLTO] Add code comment. NFC
[llvm-complete.git] / test / Demangle / ms-templates.test
blobe6ce1928b3012b4a636844baf9004f84352c0f6f
1 ; These tests are based on clang/test/CodeGenCXX/mangle-ms-cxx11.cpp
3 ; RUN: llvm-undname < %s | FileCheck %s
5 ; CHECK-NOT: Invalid mangled name
7 ?f@@3V?$C@H@@A
8 ; CHECK: class C<int> f
10 ??0?$Class@VTypename@@@@QAE@XZ
11 ; CHECK: __thiscall Class<class Typename>::Class<class Typename>(void)
12 ??0?$Class@VTypename@@@@QEAA@XZ
13 ; CHECK: __cdecl Class<class Typename>::Class<class Typename>(void)
15 ??0?$Class@$$CBVTypename@@@@QAE@XZ
16 ; CHECK: __thiscall Class<class Typename const>::Class<class Typename const>(void)
17 ??0?$Class@$$CBVTypename@@@@QEAA@XZ
18 ; CHECK: __cdecl Class<class Typename const>::Class<class Typename const>(void)
20 ??0?$Class@$$CCVTypename@@@@QAE@XZ
21 ; CHECK: __thiscall Class<class Typename volatile>::Class<class Typename volatile>(void)
22 ??0?$Class@$$CCVTypename@@@@QEAA@XZ
23 ; CHECK: __cdecl Class<class Typename volatile>::Class<class Typename volatile>(void)
25 ??0?$Class@$$CDVTypename@@@@QAE@XZ
26 ; CHECK: __thiscall Class<class Typename const volatile>::Class<class Typename const volatile>(void)
27 ??0?$Class@$$CDVTypename@@@@QEAA@XZ
28 ; CHECK: __cdecl Class<class Typename const volatile>::Class<class Typename const volatile>(void)
30 ??0?$Class@V?$Nested@VTypename@@@@@@QAE@XZ
31 ; CHECK: __thiscall Class<class Nested<class Typename>>::Class<class Nested<class Typename>>(void)
32 ??0?$Class@V?$Nested@VTypename@@@@@@QEAA@XZ
33 ; CHECK: __cdecl Class<class Nested<class Typename>>::Class<class Nested<class Typename>>(void)
35 ??0?$Class@QAH@@QAE@XZ
36 ; CHECK: __thiscall Class<int *const>::Class<int *const>(void)
37 ??0?$Class@QEAH@@QEAA@XZ
38 ; CHECK: __cdecl Class<int *const>::Class<int *const>(void)
40 ??0?$Class@$$A6AHXZ@@QAE@XZ
41 ; CHECK: __thiscall Class<int __cdecl(void)>::Class<int __cdecl(void)>(void)
42 ??0?$Class@$$A6AHXZ@@QEAA@XZ
43 ; CHECK: __cdecl Class<int __cdecl(void)>::Class<int __cdecl(void)>(void)
45 ??0?$Class@$$BY0A@H@@QAE@XZ
46 ; CHECK: __thiscall Class<int[]>::Class<int[]>(void)
47 ??0?$Class@$$BY0A@H@@QEAA@XZ
48 ; CHECK: __cdecl Class<int[]>::Class<int[]>(void)
50 ??0?$Class@$$BY04H@@QAE@XZ
51 ; CHECK: __thiscall Class<int[5]>::Class<int[5]>(void)
52 ??0?$Class@$$BY04H@@QEAA@XZ
53 ; CHECK: __cdecl Class<int[5]>::Class<int[5]>(void)
55 ??0?$Class@$$BY04$$CBH@@QAE@XZ
56 ; CHECK: __thiscall Class<int const[5]>::Class<int const[5]>(void)
57 ??0?$Class@$$BY04$$CBH@@QEAA@XZ
58 ; CHECK: __cdecl Class<int const[5]>::Class<int const[5]>(void)
60 ??0?$Class@$$BY04QAH@@QAE@XZ
61 ; CHECK: __thiscall Class<int *const[5]>::Class<int *const[5]>(void)
62 ??0?$Class@$$BY04QEAH@@QEAA@XZ
63 ; CHECK: __cdecl Class<int *const[5]>::Class<int *const[5]>(void)
65 ??0?$BoolTemplate@$0A@@@QAE@XZ
66 ; CHECK: __thiscall BoolTemplate<0>::BoolTemplate<0>(void)
67 ??0?$BoolTemplate@$0A@@@QEAA@XZ
68 ; CHECK: __cdecl BoolTemplate<0>::BoolTemplate<0>(void)
70 ??0?$BoolTemplate@$00@@QAE@XZ
71 ; CHECK: __thiscall BoolTemplate<1>::BoolTemplate<1>(void)
72 ??0?$BoolTemplate@$00@@QEAA@XZ
73 ; CHECK: __cdecl BoolTemplate<1>::BoolTemplate<1>(void)
75 ??$Foo@H@?$BoolTemplate@$00@@QAEXH@Z
76 ; CHECK: void __thiscall BoolTemplate<1>::Foo<int>(int)
77 ??$Foo@H@?$BoolTemplate@$00@@QEAAXH@Z
78 ; CHECK: void __cdecl BoolTemplate<1>::Foo<int>(int)
80 ??0?$IntTemplate@$0A@@@QAE@XZ
81 ; CHECK: __thiscall IntTemplate<0>::IntTemplate<0>(void)
82 ??0?$IntTemplate@$0A@@@QEAA@XZ
83 ; CHECK: __cdecl IntTemplate<0>::IntTemplate<0>(void)
85 ??0?$IntTemplate@$04@@QAE@XZ
86 ; CHECK: __thiscall IntTemplate<5>::IntTemplate<5>(void)
87 ??0?$IntTemplate@$04@@QEAA@XZ
88 ; CHECK: __cdecl IntTemplate<5>::IntTemplate<5>(void)
90 ??0?$IntTemplate@$0L@@@QAE@XZ
91 ; CHECK: __thiscall IntTemplate<11>::IntTemplate<11>(void)
92 ??0?$IntTemplate@$0L@@@QEAA@XZ
93 ; CHECK: __cdecl IntTemplate<11>::IntTemplate<11>(void)
95 ??0?$IntTemplate@$0BAA@@@QAE@XZ
96 ; CHECK: __thiscall IntTemplate<256>::IntTemplate<256>(void)
97 ??0?$IntTemplate@$0BAA@@@QEAA@XZ
98 ; CHECK: __cdecl IntTemplate<256>::IntTemplate<256>(void)
100 ??0?$IntTemplate@$0CAB@@@QAE@XZ
101 ; CHECK: __thiscall IntTemplate<513>::IntTemplate<513>(void)
102 ??0?$IntTemplate@$0CAB@@@QEAA@XZ
103 ; CHECK: __cdecl IntTemplate<513>::IntTemplate<513>(void)
105 ??0?$IntTemplate@$0EAC@@@QAE@XZ
106 ; CHECK: __thiscall IntTemplate<1026>::IntTemplate<1026>(void)
107 ??0?$IntTemplate@$0EAC@@@QEAA@XZ
108 ; CHECK: __cdecl IntTemplate<1026>::IntTemplate<1026>(void)
110 ??0?$IntTemplate@$0PPPP@@@QAE@XZ
111 ; CHECK: __thiscall IntTemplate<65535>::IntTemplate<65535>(void)
112 ??0?$IntTemplate@$0PPPP@@@QEAA@XZ
113 ; CHECK: __cdecl IntTemplate<65535>::IntTemplate<65535>(void)
115 ??0?$IntTemplate@$0?0@@QAE@XZ
116 ; CHECK: __thiscall IntTemplate<-1>::IntTemplate<-1>(void)
117 ??0?$IntTemplate@$0?0@@QEAA@XZ
118 ; CHECK: __cdecl IntTemplate<-1>::IntTemplate<-1>(void)
120 ??0?$IntTemplate@$0?8@@QAE@XZ
121 ; CHECK: __thiscall IntTemplate<-9>::IntTemplate<-9>(void)
122 ??0?$IntTemplate@$0?8@@QEAA@XZ
123 ; CHECK: __cdecl IntTemplate<-9>::IntTemplate<-9>(void)
125 ??0?$IntTemplate@$0?9@@QAE@XZ
126 ; CHECK: __thiscall IntTemplate<-10>::IntTemplate<-10>(void)
127 ??0?$IntTemplate@$0?9@@QEAA@XZ
128 ; CHECK: __cdecl IntTemplate<-10>::IntTemplate<-10>(void)
130 ??0?$IntTemplate@$0?L@@@QAE@XZ
131 ; CHECK: __thiscall IntTemplate<-11>::IntTemplate<-11>(void)
132 ??0?$IntTemplate@$0?L@@@QEAA@XZ
133 ; CHECK: __cdecl IntTemplate<-11>::IntTemplate<-11>(void)
135 ??0?$UnsignedIntTemplate@$0PPPPPPPP@@@QAE@XZ
136 ; CHECK: __thiscall UnsignedIntTemplate<4294967295>::UnsignedIntTemplate<4294967295>(void)
137 ??0?$UnsignedIntTemplate@$0PPPPPPPP@@@QEAA@XZ
138 ; CHECK: __cdecl UnsignedIntTemplate<4294967295>::UnsignedIntTemplate<4294967295>(void)
140 ??0?$LongLongTemplate@$0?IAAAAAAAAAAAAAAA@@@QAE@XZ
141 ; CHECK: __thiscall LongLongTemplate<-9223372036854775808>::LongLongTemplate<-9223372036854775808>(void)
142 ??0?$LongLongTemplate@$0?IAAAAAAAAAAAAAAA@@@QEAA@XZ
143 ; CHECK: __cdecl LongLongTemplate<-9223372036854775808>::LongLongTemplate<-9223372036854775808>(void)
145 ??0?$LongLongTemplate@$0HPPPPPPPPPPPPPPP@@@QAE@XZ
146 ; CHECK: __thiscall LongLongTemplate<9223372036854775807>::LongLongTemplate<9223372036854775807>(void)
147 ??0?$LongLongTemplate@$0HPPPPPPPPPPPPPPP@@@QEAA@XZ
148 ; CHECK: __cdecl LongLongTemplate<9223372036854775807>::LongLongTemplate<9223372036854775807>(void)
150 ; -1 is indistinguishable from uint64_max in this encoding.
151 ??0?$UnsignedLongLongTemplate@$0?0@@QAE@XZ
152 ; CHECK: __thiscall UnsignedLongLongTemplate<-1>::UnsignedLongLongTemplate<-1>(void)
153 ??0?$UnsignedLongLongTemplate@$0?0@@QEAA@XZ
154 ; CHECK: __cdecl UnsignedLongLongTemplate<-1>::UnsignedLongLongTemplate<-1>(void)
156 ??$foo@H@space@@YAABHABH@Z
157 ; CHECK: int const & __cdecl space::foo<int>(int const &)
158 ??$foo@H@space@@YAAEBHAEBH@Z
159 ; CHECK: int const & __cdecl space::foo<int>(int const &)
161 ??$FunctionPointerTemplate@$1?spam@@YAXXZ@@YAXXZ
162 ; CHECK: void __cdecl FunctionPointerTemplate<&void __cdecl spam(void)>(void)
164 ??$variadic_fn_template@HHHH@@YAXABH000@Z
165 ; CHECK: void __cdecl variadic_fn_template<int, int, int,   int>(int const &, int const &, int const &, int const &)
166 ??$variadic_fn_template@HHD$$BY01D@@YAXABH0ABDAAY01$$CBD@Z
167 ; CHECK: void __cdecl variadic_fn_template<int, int, char, char[2]>(int const &, int const &, char const &, char const (&)[2]
169 ??0?$VariadicClass@HD_N@@QAE@XZ
170 ; CHECK: __thiscall VariadicClass<int, char, bool>::VariadicClass<int, char, bool>(void)
172 ??0?$VariadicClass@_NDH@@QAE@XZ
173 ; CHECK: __thiscall VariadicClass<bool, char, int>::VariadicClass<bool, char, int>(void)
176 ?template_template_fun@@YAXU?$Type@U?$Thing@USecond@@$00@@USecond@@@@@Z
177 ; CHECK: void __cdecl template_template_fun(struct Type<struct Thing<struct Second, 1>, struct Second>)
179 ??$template_template_specialization@$$A6AXU?$Type@U?$Thing@USecond@@$00@@USecond@@@@@Z@@YAXXZ
180 ; CHECK: void __cdecl template_template_specialization<void __cdecl(struct Type<struct Thing<struct Second, 1>, struct Second>)>(void)
182 ?f@@YAXU?$S1@$0A@@@@Z
183 ; CHECK: void __cdecl f(struct S1<0>)
185 ?recref@@YAXU?$type1@$E?inst@@3Urecord@@B@@@Z
186 ; CHECK: void __cdecl recref(struct type1<struct record const inst>)
188 ?fun@@YAXU?$UUIDType1@Uuuid@@$1?_GUID_12345678_1234_1234_1234_1234567890ab@@3U__s_GUID@@B@@@Z
189 ; CHECK: void __cdecl fun(struct UUIDType1<struct uuid, &struct __s_GUID const _GUID_12345678_1234_1234_1234_1234567890ab>)
190 ?fun@@YAXU?$UUIDType2@Uuuid@@$E?_GUID_12345678_1234_1234_1234_1234567890ab@@3U__s_GUID@@B@@@Z
191 ; CHECK: void __cdecl fun(struct UUIDType2<struct uuid, struct __s_GUID const _GUID_12345678_1234_1234_1234_1234567890ab>)
193 ?FunctionDefinedWithInjectedName@@YAXU?$TypeWithFriendDefinition@H@@@Z
194 ; CHECK: void __cdecl FunctionDefinedWithInjectedName(struct TypeWithFriendDefinition<int>)
196 ?bar@?$UUIDType4@$1?_GUID_12345678_1234_1234_1234_1234567890ab@@3U__s_GUID@@B@@QAEXXZ
197 ; CHECK: void __thiscall UUIDType4<&struct __s_GUID const _GUID_12345678_1234_1234_1234_1234567890ab>::bar(void)
199 ??$f@US@@$1?g@1@QEAAXXZ@@YAXXZ
200 ; CHECK: void __cdecl f<struct S, &public: void __cdecl S::g(void)>(void)
202 ??$?0N@?$Foo@H@@QEAA@N@Z
203 ; CHECK: __cdecl Foo<int>::Foo<int><double>(double)