xref: /llvm-project/llvm/test/Demangle/ms-basic.test (revision 1dce82636c9241b8208abe05ba02e499424338d5)
1f435a7eaSZachary Turner; RUN: llvm-undname < %s | FileCheck %s
2f435a7eaSZachary Turner
3f435a7eaSZachary Turner; CHECK-NOT: Invalid mangled name
4f435a7eaSZachary Turner
5f435a7eaSZachary Turner?x@@3HA
6f435a7eaSZachary Turner; CHECK: int x
7f435a7eaSZachary Turner
8f435a7eaSZachary Turner?x@@3PEAHEA
9f435a7eaSZachary Turner; CHECK: int *x
10f435a7eaSZachary Turner
11f435a7eaSZachary Turner?x@@3PEAPEAHEA
12f435a7eaSZachary Turner; CHECK: int **x
13f435a7eaSZachary Turner
14880d21d3SNico Weber?foo@@3Y123KA
15880d21d3SNico Weber; CHECK: unsigned long foo[3][4]
16880d21d3SNico Weber
17f435a7eaSZachary Turner?x@@3PEAY02HEA
18f435a7eaSZachary Turner; CHECK: int (*x)[3]
19f435a7eaSZachary Turner
20f435a7eaSZachary Turner?x@@3PEAY124HEA
21f435a7eaSZachary Turner; CHECK: int (*x)[3][5]
22f435a7eaSZachary Turner
23f435a7eaSZachary Turner?x@@3PEAY02$$CBHEA
24f435a7eaSZachary Turner; CHECK: int const (*x)[3]
25f435a7eaSZachary Turner
26f435a7eaSZachary Turner?x@@3PEAEEA
27f435a7eaSZachary Turner; CHECK: unsigned char *x
28f435a7eaSZachary Turner
29869308ddSNico Weber?y@@3PEAGEA
30869308ddSNico Weber; CHECK: unsigned short *y
31869308ddSNico Weber
32869308ddSNico Weber?z@@3PEAKEA
33869308ddSNico Weber; CHECK: unsigned long *z
34869308ddSNico Weber
35f435a7eaSZachary Turner?x@@3PEAY1NKM@5HEA
36f435a7eaSZachary Turner; CHECK: int (*x)[3500][6]
37f435a7eaSZachary Turner
38f435a7eaSZachary Turner?x@@YAXMH@Z
39f435a7eaSZachary Turner; CHECK: void __cdecl x(float, int)
40f435a7eaSZachary Turner
4146385484SNico Weber?x@@YAXMHZZ
42*1dce8263SNico Weber; CHECK: void __cdecl x(float, int, ...)
43*1dce8263SNico Weber
44*1dce8263SNico Weber?x@@YAXZZ
45*1dce8263SNico Weber; CHECK: void __cdecl x(...)
4646385484SNico Weber
47f435a7eaSZachary Turner?x@@3P6AHMNH@ZEA
48024e1762SZachary Turner; CHECK: int (__cdecl *x)(float, double, int)
49f435a7eaSZachary Turner
50f435a7eaSZachary Turner?x@@3P6AHP6AHM@ZN@ZEA
51024e1762SZachary Turner; CHECK: int (__cdecl *x)(int (__cdecl *)(float), double)
52f435a7eaSZachary Turner
53f435a7eaSZachary Turner?x@@3P6AHP6AHM@Z0@ZEA
54024e1762SZachary Turner; CHECK: int (__cdecl *x)(int (__cdecl *)(float), int (__cdecl *)(float))
55f435a7eaSZachary Turner
56f435a7eaSZachary Turner?x@ns@@3HA
57f435a7eaSZachary Turner; CHECK: int ns::x
58f435a7eaSZachary Turner
59f435a7eaSZachary Turner; Microsoft's undname doesn't handle Q correctly or the multiple occurrences
60f435a7eaSZachary Turner; of the const modifier.  So the results here differ, but ours are correct.
61f435a7eaSZachary Turner?x@@3PEAHEA
62f435a7eaSZachary Turner; CHECK: int *x
63f435a7eaSZachary Turner
64f435a7eaSZachary Turner?x@@3PEBHEB
65f435a7eaSZachary Turner; CHECK: int const *x
66f435a7eaSZachary Turner
67f435a7eaSZachary Turner?x@@3QEAHEA
68f435a7eaSZachary Turner; CHECK: int *const x
69f435a7eaSZachary Turner
70f435a7eaSZachary Turner?x@@3QEBHEB
71f435a7eaSZachary Turner; CHECK: int const *const x
72f435a7eaSZachary Turner
73f435a7eaSZachary Turner
74f435a7eaSZachary Turner?x@@3AEBHEB
75f435a7eaSZachary Turner; CHECK: int const &x
76f435a7eaSZachary Turner
77f435a7eaSZachary Turner?x@@3PEAUty@@EA
78f435a7eaSZachary Turner; CHECK: struct ty *x
79f435a7eaSZachary Turner
80f435a7eaSZachary Turner?x@@3PEATty@@EA
81f435a7eaSZachary Turner; CHECK: union ty *x
82f435a7eaSZachary Turner
8303312863SZachary Turner?x@@3PEAVty@@EA
8403312863SZachary Turner; CHECK: class ty *x
85f435a7eaSZachary Turner
86f435a7eaSZachary Turner?x@@3PEAW4ty@@EA
87f435a7eaSZachary Turner; CHECK: enum ty *x
88f435a7eaSZachary Turner
89f435a7eaSZachary Turner?x@@3PEAV?$tmpl@H@@EA
90f435a7eaSZachary Turner; CHECK: class tmpl<int> *x
91f435a7eaSZachary Turner
92f435a7eaSZachary Turner?x@@3PEAU?$tmpl@H@@EA
93f435a7eaSZachary Turner; CHECK: struct tmpl<int> *x
94f435a7eaSZachary Turner
95f435a7eaSZachary Turner?x@@3PEAT?$tmpl@H@@EA
96f435a7eaSZachary Turner; CHECK: union tmpl<int> *x
97f435a7eaSZachary Turner
98f435a7eaSZachary Turner?instance@@3Vklass@@A
99f435a7eaSZachary Turner; CHECK: class klass instance
100f435a7eaSZachary Turner
101f435a7eaSZachary Turner?instance$initializer$@@3P6AXXZEA
102024e1762SZachary Turner; CHECK: void (__cdecl *instance$initializer$)(void)
103f435a7eaSZachary Turner
104f435a7eaSZachary Turner??0klass@@QEAA@XZ
105f435a7eaSZachary Turner; CHECK: __cdecl klass::klass(void)
106f435a7eaSZachary Turner
107f435a7eaSZachary Turner??1klass@@QEAA@XZ
108f435a7eaSZachary Turner; CHECK: __cdecl klass::~klass(void)
109f435a7eaSZachary Turner
110f435a7eaSZachary Turner?x@@YAHPEAVklass@@AEAV1@@Z
111f435a7eaSZachary Turner; CHECK: int __cdecl x(class klass *, class klass &)
112f435a7eaSZachary Turner
113f435a7eaSZachary Turner?x@ns@@3PEAV?$klass@HH@1@EA
114f435a7eaSZachary Turner; CHECK: class ns::klass<int, int> *ns::x
115f435a7eaSZachary Turner
116f435a7eaSZachary Turner?fn@?$klass@H@ns@@QEBAIXZ
117f435a7eaSZachary Turner; CHECK: unsigned int __cdecl ns::klass<int>::fn(void) const
118f435a7eaSZachary Turner
119f435a7eaSZachary Turner
120f435a7eaSZachary Turner??4klass@@QEAAAEBV0@AEBV0@@Z
121f435a7eaSZachary Turner; CHECK: class klass const & __cdecl klass::operator=(class klass const &)
122f435a7eaSZachary Turner
123f435a7eaSZachary Turner??7klass@@QEAA_NXZ
124f435a7eaSZachary Turner; CHECK: bool __cdecl klass::operator!(void)
125f435a7eaSZachary Turner
126f435a7eaSZachary Turner??8klass@@QEAA_NAEBV0@@Z
127f435a7eaSZachary Turner; CHECK: bool __cdecl klass::operator==(class klass const &)
128f435a7eaSZachary Turner
129f435a7eaSZachary Turner??9klass@@QEAA_NAEBV0@@Z
130f435a7eaSZachary Turner; CHECK: bool __cdecl klass::operator!=(class klass const &)
131f435a7eaSZachary Turner
132f435a7eaSZachary Turner??Aklass@@QEAAH_K@Z
133f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator[](unsigned __int64)
134f435a7eaSZachary Turner
135f435a7eaSZachary Turner??Cklass@@QEAAHXZ
136f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator->(void)
137f435a7eaSZachary Turner
138f435a7eaSZachary Turner??Dklass@@QEAAHXZ
139f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator*(void)
140f435a7eaSZachary Turner
141f435a7eaSZachary Turner??Eklass@@QEAAHXZ
142f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator++(void)
143f435a7eaSZachary Turner
144f435a7eaSZachary Turner??Eklass@@QEAAHH@Z
145f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator++(int)
146f435a7eaSZachary Turner
147f435a7eaSZachary Turner??Fklass@@QEAAHXZ
148f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator--(void)
149f435a7eaSZachary Turner
150f435a7eaSZachary Turner??Fklass@@QEAAHH@Z
151f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator--(int)
152f435a7eaSZachary Turner
153f435a7eaSZachary Turner??Hklass@@QEAAHH@Z
154f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator+(int)
155f435a7eaSZachary Turner
156f435a7eaSZachary Turner??Gklass@@QEAAHH@Z
157f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator-(int)
158f435a7eaSZachary Turner
159f435a7eaSZachary Turner??Iklass@@QEAAHH@Z
160f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator&(int)
161f435a7eaSZachary Turner
162f435a7eaSZachary Turner??Jklass@@QEAAHH@Z
163f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator->*(int)
164f435a7eaSZachary Turner
165f435a7eaSZachary Turner??Kklass@@QEAAHH@Z
166f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator/(int)
167f435a7eaSZachary Turner
168f435a7eaSZachary Turner??Mklass@@QEAAHH@Z
169f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator<(int)
170f435a7eaSZachary Turner
171f435a7eaSZachary Turner??Nklass@@QEAAHH@Z
172f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator<=(int)
173f435a7eaSZachary Turner
174f435a7eaSZachary Turner??Oklass@@QEAAHH@Z
175f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator>(int)
176f435a7eaSZachary Turner
177f435a7eaSZachary Turner??Pklass@@QEAAHH@Z
178f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator>=(int)
179f435a7eaSZachary Turner
180f435a7eaSZachary Turner??Qklass@@QEAAHH@Z
181f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator,(int)
182f435a7eaSZachary Turner
183f435a7eaSZachary Turner??Rklass@@QEAAHH@Z
184f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator()(int)
185f435a7eaSZachary Turner
186f435a7eaSZachary Turner??Sklass@@QEAAHXZ
187f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator~(void)
188f435a7eaSZachary Turner
189f435a7eaSZachary Turner??Tklass@@QEAAHH@Z
190f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator^(int)
191f435a7eaSZachary Turner
192f435a7eaSZachary Turner??Uklass@@QEAAHH@Z
193f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator|(int)
194f435a7eaSZachary Turner
195f435a7eaSZachary Turner??Vklass@@QEAAHH@Z
196f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator&&(int)
197f435a7eaSZachary Turner
198f435a7eaSZachary Turner??Wklass@@QEAAHH@Z
199f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator||(int)
200f435a7eaSZachary Turner
201f435a7eaSZachary Turner??Xklass@@QEAAHH@Z
202f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator*=(int)
203f435a7eaSZachary Turner
204f435a7eaSZachary Turner??Yklass@@QEAAHH@Z
205f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator+=(int)
206f435a7eaSZachary Turner
207f435a7eaSZachary Turner??Zklass@@QEAAHH@Z
208f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator-=(int)
209f435a7eaSZachary Turner
210f435a7eaSZachary Turner??_0klass@@QEAAHH@Z
211f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator/=(int)
212f435a7eaSZachary Turner
213f435a7eaSZachary Turner??_1klass@@QEAAHH@Z
214f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator%=(int)
215f435a7eaSZachary Turner
216f435a7eaSZachary Turner??_2klass@@QEAAHH@Z
217f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator>>=(int)
218f435a7eaSZachary Turner
219f435a7eaSZachary Turner??_3klass@@QEAAHH@Z
220f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator<<=(int)
221f435a7eaSZachary Turner
222f435a7eaSZachary Turner??_6klass@@QEAAHH@Z
223f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator^=(int)
224f435a7eaSZachary Turner
225f435a7eaSZachary Turner??6@YAAEBVklass@@AEBV0@H@Z
226f435a7eaSZachary Turner; CHECK: class klass const & __cdecl operator<<(class klass const &, int)
227f435a7eaSZachary Turner
228f435a7eaSZachary Turner??5@YAAEBVklass@@AEBV0@_K@Z
229f435a7eaSZachary Turner; CHECK: class klass const & __cdecl operator>>(class klass const &, unsigned __int64)
230f435a7eaSZachary Turner
231f435a7eaSZachary Turner??2@YAPEAX_KAEAVklass@@@Z
232f435a7eaSZachary Turner; CHECK: void * __cdecl operator new(unsigned __int64, class klass &)
233f435a7eaSZachary Turner
234f435a7eaSZachary Turner??_U@YAPEAX_KAEAVklass@@@Z
235f435a7eaSZachary Turner; CHECK: void * __cdecl operator new[](unsigned __int64, class klass &)
236f435a7eaSZachary Turner
237f435a7eaSZachary Turner??3@YAXPEAXAEAVklass@@@Z
238f435a7eaSZachary Turner; CHECK: void __cdecl operator delete(void *, class klass &)
239f435a7eaSZachary Turner
240f435a7eaSZachary Turner??_V@YAXPEAXAEAVklass@@@Z
241f435a7eaSZachary Turner; CHECK: void __cdecl operator delete[](void *, class klass &)
242f435a7eaSZachary Turner
2435961b020SNico Weber?A@?A0x43583946@@3VB@@B
2445961b020SNico Weber; CHECK: class B const `anonymous namespace'::A
245