[llvm-readobj] - Simplify stack-sizes.test test case.
[llvm-complete.git] / test / Demangle / ms-basic.test
blobbc514b4e0c6078fe252f13fed053d2f3e5fe270f
1 ; RUN: llvm-undname < %s | FileCheck %s
3 ; CHECK-NOT: Invalid mangled name
5 ?x@@3HA
6 ; CHECK: int x
8 ?x@@3PEAHEA
9 ; CHECK: int *x
11 ?x@@3PEAPEAHEA
12 ; CHECK: int **x
14 ?foo@@3Y123KA
15 ; CHECK: unsigned long foo[3][4]
17 ?x@@3PEAY02HEA
18 ; CHECK: int (*x)[3]
20 ?x@@3PEAY124HEA
21 ; CHECK: int (*x)[3][5]
23 ?x@@3PEAY02$$CBHEA
24 ; CHECK: int const (*x)[3]
26 ?x@@3PEAEEA
27 ; CHECK: unsigned char *x
29 ?y@@3PEAGEA
30 ; CHECK: unsigned short *y
32 ?z@@3PEAKEA
33 ; CHECK: unsigned long *z
35 ?x@@3PEAY1NKM@5HEA
36 ; CHECK: int (*x)[3500][6]
38 ?x@@YAXMH@Z
39 ; CHECK: void __cdecl x(float, int)
41 ?x@@YAXMHZZ
42 ; CHECK: void __cdecl x(float, int, ...)
44 ?x@@YAXZZ
45 ; CHECK: void __cdecl x(...)
47 ?x@@3P6AHMNH@ZEA
48 ; CHECK: int (__cdecl *x)(float, double, int)
50 ?x@@3P6AHP6AHM@ZN@ZEA
51 ; CHECK: int (__cdecl *x)(int (__cdecl *)(float), double)
53 ?x@@3P6AHP6AHM@Z0@ZEA
54 ; CHECK: int (__cdecl *x)(int (__cdecl *)(float), int (__cdecl *)(float))
56 ?x@ns@@3HA
57 ; CHECK: int ns::x
59 ; Microsoft's undname doesn't handle Q correctly or the multiple occurrences
60 ; of the const modifier.  So the results here differ, but ours are correct.
61 ?x@@3PEAHEA
62 ; CHECK: int *x
64 ?x@@3PEBHEB
65 ; CHECK: int const *x
67 ?x@@3QEAHEA
68 ; CHECK: int *const x
70 ?x@@3QEBHEB
71 ; CHECK: int const *const x
74 ?x@@3AEBHEB
75 ; CHECK: int const &x
77 ?x@@3PEAUty@@EA
78 ; CHECK: struct ty *x
80 ?x@@3PEATty@@EA
81 ; CHECK: union ty *x
83 ?x@@3PEAVty@@EA
84 ; CHECK: class ty *x
86 ?x@@3PEAW4ty@@EA
87 ; CHECK: enum ty *x
89 ?x@@3PEAV?$tmpl@H@@EA
90 ; CHECK: class tmpl<int> *x
92 ?x@@3PEAU?$tmpl@H@@EA
93 ; CHECK: struct tmpl<int> *x
95 ?x@@3PEAT?$tmpl@H@@EA
96 ; CHECK: union tmpl<int> *x
98 ?instance@@3Vklass@@A
99 ; CHECK: class klass instance
101 ?instance$initializer$@@3P6AXXZEA
102 ; CHECK: void (__cdecl *instance$initializer$)(void)
104 ??0klass@@QEAA@XZ
105 ; CHECK: __cdecl klass::klass(void)
107 ??1klass@@QEAA@XZ
108 ; CHECK: __cdecl klass::~klass(void)
110 ?x@@YAHPEAVklass@@AEAV1@@Z
111 ; CHECK: int __cdecl x(class klass *, class klass &)
113 ?x@ns@@3PEAV?$klass@HH@1@EA
114 ; CHECK: class ns::klass<int, int> *ns::x
116 ?fn@?$klass@H@ns@@QEBAIXZ
117 ; CHECK: unsigned int __cdecl ns::klass<int>::fn(void) const
120 ??4klass@@QEAAAEBV0@AEBV0@@Z
121 ; CHECK: class klass const & __cdecl klass::operator=(class klass const &)
123 ??7klass@@QEAA_NXZ
124 ; CHECK: bool __cdecl klass::operator!(void)
126 ??8klass@@QEAA_NAEBV0@@Z
127 ; CHECK: bool __cdecl klass::operator==(class klass const &)
129 ??9klass@@QEAA_NAEBV0@@Z
130 ; CHECK: bool __cdecl klass::operator!=(class klass const &)
132 ??Aklass@@QEAAH_K@Z
133 ; CHECK: int __cdecl klass::operator[](unsigned __int64)
135 ??Cklass@@QEAAHXZ
136 ; CHECK: int __cdecl klass::operator->(void)
138 ??Dklass@@QEAAHXZ
139 ; CHECK: int __cdecl klass::operator*(void)
141 ??Eklass@@QEAAHXZ
142 ; CHECK: int __cdecl klass::operator++(void)
144 ??Eklass@@QEAAHH@Z
145 ; CHECK: int __cdecl klass::operator++(int)
147 ??Fklass@@QEAAHXZ
148 ; CHECK: int __cdecl klass::operator--(void)
150 ??Fklass@@QEAAHH@Z
151 ; CHECK: int __cdecl klass::operator--(int)
153 ??Hklass@@QEAAHH@Z
154 ; CHECK: int __cdecl klass::operator+(int)
156 ??Gklass@@QEAAHH@Z
157 ; CHECK: int __cdecl klass::operator-(int)
159 ??Iklass@@QEAAHH@Z
160 ; CHECK: int __cdecl klass::operator&(int)
162 ??Jklass@@QEAAHH@Z
163 ; CHECK: int __cdecl klass::operator->*(int)
165 ??Kklass@@QEAAHH@Z
166 ; CHECK: int __cdecl klass::operator/(int)
168 ??Mklass@@QEAAHH@Z
169 ; CHECK: int __cdecl klass::operator<(int)
171 ??Nklass@@QEAAHH@Z
172 ; CHECK: int __cdecl klass::operator<=(int)
174 ??Oklass@@QEAAHH@Z
175 ; CHECK: int __cdecl klass::operator>(int)
177 ??Pklass@@QEAAHH@Z
178 ; CHECK: int __cdecl klass::operator>=(int)
180 ??Qklass@@QEAAHH@Z
181 ; CHECK: int __cdecl klass::operator,(int)
183 ??Rklass@@QEAAHH@Z
184 ; CHECK: int __cdecl klass::operator()(int)
186 ??Sklass@@QEAAHXZ
187 ; CHECK: int __cdecl klass::operator~(void)
189 ??Tklass@@QEAAHH@Z
190 ; CHECK: int __cdecl klass::operator^(int)
192 ??Uklass@@QEAAHH@Z
193 ; CHECK: int __cdecl klass::operator|(int)
195 ??Vklass@@QEAAHH@Z
196 ; CHECK: int __cdecl klass::operator&&(int)
198 ??Wklass@@QEAAHH@Z
199 ; CHECK: int __cdecl klass::operator||(int)
201 ??Xklass@@QEAAHH@Z
202 ; CHECK: int __cdecl klass::operator*=(int)
204 ??Yklass@@QEAAHH@Z
205 ; CHECK: int __cdecl klass::operator+=(int)
207 ??Zklass@@QEAAHH@Z
208 ; CHECK: int __cdecl klass::operator-=(int)
210 ??_0klass@@QEAAHH@Z
211 ; CHECK: int __cdecl klass::operator/=(int)
213 ??_1klass@@QEAAHH@Z
214 ; CHECK: int __cdecl klass::operator%=(int)
216 ??_2klass@@QEAAHH@Z
217 ; CHECK: int __cdecl klass::operator>>=(int)
219 ??_3klass@@QEAAHH@Z
220 ; CHECK: int __cdecl klass::operator<<=(int)
222 ??_6klass@@QEAAHH@Z
223 ; CHECK: int __cdecl klass::operator^=(int)
225 ??6@YAAEBVklass@@AEBV0@H@Z
226 ; CHECK: class klass const & __cdecl operator<<(class klass const &, int)
228 ??5@YAAEBVklass@@AEBV0@_K@Z
229 ; CHECK: class klass const & __cdecl operator>>(class klass const &, unsigned __int64)
231 ??2@YAPEAX_KAEAVklass@@@Z
232 ; CHECK: void * __cdecl operator new(unsigned __int64, class klass &)
234 ??_U@YAPEAX_KAEAVklass@@@Z
235 ; CHECK: void * __cdecl operator new[](unsigned __int64, class klass &)
237 ??3@YAXPEAXAEAVklass@@@Z
238 ; CHECK: void __cdecl operator delete(void *, class klass &)
240 ??_V@YAXPEAXAEAVklass@@@Z
241 ; CHECK: void __cdecl operator delete[](void *, class klass &)
243 ?A@?A0x43583946@@3VB@@B
244 ; CHECK: class B const `anonymous namespace'::A