blob: 91ac38bd2b87cf160e3af8cacda2136eb7d2e4ad [file] [log] [blame]
Zachary Turner42e40ea2018-07-20 17:27:48 +00001; RUN: llvm-undname < %s | FileCheck %s
2
3; CHECK-NOT: Invalid mangled name
4
5?x@@3HA
6; CHECK: int x
7
8?x@@3PEAHEA
9; CHECK: int *x
10
11?x@@3PEAPEAHEA
12; CHECK: int **x
13
14?x@@3PEAY02HEA
15; CHECK: int (*x)[3]
16
17?x@@3PEAY124HEA
18; CHECK: int (*x)[3][5]
19
20?x@@3PEAY02$$CBHEA
21; CHECK: int const (*x)[3]
22
23?x@@3PEAEEA
24; CHECK: unsigned char *x
25
26?x@@3PEAY1NKM@5HEA
27; CHECK: int (*x)[3500][6]
28
29?x@@YAXMH@Z
30; CHECK: void __cdecl x(float, int)
31
32?x@@3P6AHMNH@ZEA
Zachary Turnerc2403ba2018-07-26 20:33:48 +000033; CHECK: int (__cdecl *x)(float, double, int)
Zachary Turner42e40ea2018-07-20 17:27:48 +000034
35?x@@3P6AHP6AHM@ZN@ZEA
Zachary Turnerc2403ba2018-07-26 20:33:48 +000036; CHECK: int (__cdecl *x)(int (__cdecl *)(float), double)
Zachary Turner42e40ea2018-07-20 17:27:48 +000037
38?x@@3P6AHP6AHM@Z0@ZEA
Zachary Turnerc2403ba2018-07-26 20:33:48 +000039; CHECK: int (__cdecl *x)(int (__cdecl *)(float), int (__cdecl *)(float))
Zachary Turner42e40ea2018-07-20 17:27:48 +000040
41?x@ns@@3HA
42; CHECK: int ns::x
43
44; Microsoft's undname doesn't handle Q correctly or the multiple occurrences
45; of the const modifier. So the results here differ, but ours are correct.
46?x@@3PEAHEA
47; CHECK: int *x
48
49?x@@3PEBHEB
50; CHECK: int const *x
51
52?x@@3QEAHEA
53; CHECK: int *const x
54
55?x@@3QEBHEB
56; CHECK: int const *const x
57
58
59?x@@3AEBHEB
60; CHECK: int const &x
61
62?x@@3PEAUty@@EA
63; CHECK: struct ty *x
64
65?x@@3PEATty@@EA
66; CHECK: union ty *x
67
Zachary Turner6e3e8a72018-08-27 03:48:03 +000068?x@@3PEAVty@@EA
69; CHECK: class ty *x
Zachary Turner42e40ea2018-07-20 17:27:48 +000070
71?x@@3PEAW4ty@@EA
72; CHECK: enum ty *x
73
Zachary Turner42e40ea2018-07-20 17:27:48 +000074?x@@3PEAV?$tmpl@H@@EA
75; CHECK: class tmpl<int> *x
76
77?x@@3PEAU?$tmpl@H@@EA
78; CHECK: struct tmpl<int> *x
79
80?x@@3PEAT?$tmpl@H@@EA
81; CHECK: union tmpl<int> *x
82
83?instance@@3Vklass@@A
84; CHECK: class klass instance
85
86?instance$initializer$@@3P6AXXZEA
Zachary Turnerc2403ba2018-07-26 20:33:48 +000087; CHECK: void (__cdecl *instance$initializer$)(void)
Zachary Turner42e40ea2018-07-20 17:27:48 +000088
89??0klass@@QEAA@XZ
90; CHECK: __cdecl klass::klass(void)
91
92??1klass@@QEAA@XZ
93; CHECK: __cdecl klass::~klass(void)
94
95?x@@YAHPEAVklass@@AEAV1@@Z
96; CHECK: int __cdecl x(class klass *, class klass &)
97
98?x@ns@@3PEAV?$klass@HH@1@EA
99; CHECK: class ns::klass<int, int> *ns::x
100
101?fn@?$klass@H@ns@@QEBAIXZ
102; CHECK: unsigned int __cdecl ns::klass<int>::fn(void) const
103
104
105??4klass@@QEAAAEBV0@AEBV0@@Z
Zachary Turnerd4bb30e2018-07-26 20:20:10 +0000106; CHECK: class klass const & __cdecl klass::operator=(class klass const &)
Zachary Turner42e40ea2018-07-20 17:27:48 +0000107
108??7klass@@QEAA_NXZ
109; CHECK: bool __cdecl klass::operator!(void)
110
111??8klass@@QEAA_NAEBV0@@Z
112; CHECK: bool __cdecl klass::operator==(class klass const &)
113
114??9klass@@QEAA_NAEBV0@@Z
115; CHECK: bool __cdecl klass::operator!=(class klass const &)
116
117??Aklass@@QEAAH_K@Z
118; CHECK: int __cdecl klass::operator[](unsigned __int64)
119
120??Cklass@@QEAAHXZ
121; CHECK: int __cdecl klass::operator->(void)
122
123??Dklass@@QEAAHXZ
124; CHECK: int __cdecl klass::operator*(void)
125
126??Eklass@@QEAAHXZ
127; CHECK: int __cdecl klass::operator++(void)
128
129??Eklass@@QEAAHH@Z
130; CHECK: int __cdecl klass::operator++(int)
131
132??Fklass@@QEAAHXZ
133; CHECK: int __cdecl klass::operator--(void)
134
135??Fklass@@QEAAHH@Z
136; CHECK: int __cdecl klass::operator--(int)
137
138??Hklass@@QEAAHH@Z
139; CHECK: int __cdecl klass::operator+(int)
140
141??Gklass@@QEAAHH@Z
142; CHECK: int __cdecl klass::operator-(int)
143
144??Iklass@@QEAAHH@Z
145; CHECK: int __cdecl klass::operator&(int)
146
147??Jklass@@QEAAHH@Z
148; CHECK: int __cdecl klass::operator->*(int)
149
150??Kklass@@QEAAHH@Z
151; CHECK: int __cdecl klass::operator/(int)
152
153??Mklass@@QEAAHH@Z
154; CHECK: int __cdecl klass::operator<(int)
155
156??Nklass@@QEAAHH@Z
157; CHECK: int __cdecl klass::operator<=(int)
158
159??Oklass@@QEAAHH@Z
160; CHECK: int __cdecl klass::operator>(int)
161
162??Pklass@@QEAAHH@Z
163; CHECK: int __cdecl klass::operator>=(int)
164
165??Qklass@@QEAAHH@Z
166; CHECK: int __cdecl klass::operator,(int)
167
168??Rklass@@QEAAHH@Z
169; CHECK: int __cdecl klass::operator()(int)
170
171??Sklass@@QEAAHXZ
172; CHECK: int __cdecl klass::operator~(void)
173
174??Tklass@@QEAAHH@Z
175; CHECK: int __cdecl klass::operator^(int)
176
177??Uklass@@QEAAHH@Z
178; CHECK: int __cdecl klass::operator|(int)
179
180??Vklass@@QEAAHH@Z
181; CHECK: int __cdecl klass::operator&&(int)
182
183??Wklass@@QEAAHH@Z
184; CHECK: int __cdecl klass::operator||(int)
185
186??Xklass@@QEAAHH@Z
187; CHECK: int __cdecl klass::operator*=(int)
188
189??Yklass@@QEAAHH@Z
190; CHECK: int __cdecl klass::operator+=(int)
191
192??Zklass@@QEAAHH@Z
193; CHECK: int __cdecl klass::operator-=(int)
194
195??_0klass@@QEAAHH@Z
196; CHECK: int __cdecl klass::operator/=(int)
197
198??_1klass@@QEAAHH@Z
199; CHECK: int __cdecl klass::operator%=(int)
200
201??_2klass@@QEAAHH@Z
202; CHECK: int __cdecl klass::operator>>=(int)
203
204??_3klass@@QEAAHH@Z
205; CHECK: int __cdecl klass::operator<<=(int)
206
207??_6klass@@QEAAHH@Z
208; CHECK: int __cdecl klass::operator^=(int)
209
210??6@YAAEBVklass@@AEBV0@H@Z
Zachary Turnerd4bb30e2018-07-26 20:20:10 +0000211; CHECK: class klass const & __cdecl operator<<(class klass const &, int)
Zachary Turner42e40ea2018-07-20 17:27:48 +0000212
213??5@YAAEBVklass@@AEBV0@_K@Z
Zachary Turnerd4bb30e2018-07-26 20:20:10 +0000214; CHECK: class klass const & __cdecl operator>>(class klass const &, unsigned __int64)
Zachary Turner42e40ea2018-07-20 17:27:48 +0000215
216??2@YAPEAX_KAEAVklass@@@Z
Zachary Turnerd4bb30e2018-07-26 20:20:10 +0000217; CHECK: void * __cdecl operator new(unsigned __int64, class klass &)
Zachary Turner42e40ea2018-07-20 17:27:48 +0000218
219??_U@YAPEAX_KAEAVklass@@@Z
Zachary Turnerd4bb30e2018-07-26 20:20:10 +0000220; CHECK: void * __cdecl operator new[](unsigned __int64, class klass &)
Zachary Turner42e40ea2018-07-20 17:27:48 +0000221
222??3@YAXPEAXAEAVklass@@@Z
223; CHECK: void __cdecl operator delete(void *, class klass &)
224
225??_V@YAXPEAXAEAVklass@@@Z
226; CHECK: void __cdecl operator delete[](void *, class klass &)
227
Zachary Turner79779572018-08-20 23:58:35 +0000228; ?A@?A0x43583946@@3VB@@B
229class B const `anonymous namespace'::A