| ; RUN: llvm-undname < %s | FileCheck %s |
| |
| ; CHECK-NOT: Invalid mangled name |
| |
| ?x@@3HA |
| ; CHECK: int x |
| |
| ?x@@3PEAHEA |
| ; CHECK: int *x |
| |
| ?x@@3PEAPEAHEA |
| ; CHECK: int **x |
| |
| ?x@@3PEAY02HEA |
| ; CHECK: int (*x)[3] |
| |
| ?x@@3PEAY124HEA |
| ; CHECK: int (*x)[3][5] |
| |
| ?x@@3PEAY02$$CBHEA |
| ; CHECK: int const (*x)[3] |
| |
| ?x@@3PEAEEA |
| ; CHECK: unsigned char *x |
| |
| ?x@@3PEAY1NKM@5HEA |
| ; CHECK: int (*x)[3500][6] |
| |
| ?x@@YAXMH@Z |
| ; CHECK: void __cdecl x(float, int) |
| |
| ?x@@3P6AHMNH@ZEA |
| ; CHECK: int (__cdecl *x)(float, double, int) |
| |
| ?x@@3P6AHP6AHM@ZN@ZEA |
| ; CHECK: int (__cdecl *x)(int (__cdecl *)(float), double) |
| |
| ?x@@3P6AHP6AHM@Z0@ZEA |
| ; CHECK: int (__cdecl *x)(int (__cdecl *)(float), int (__cdecl *)(float)) |
| |
| ?x@ns@@3HA |
| ; CHECK: int ns::x |
| |
| ; Microsoft's undname doesn't handle Q correctly or the multiple occurrences |
| ; of the const modifier. So the results here differ, but ours are correct. |
| ?x@@3PEAHEA |
| ; CHECK: int *x |
| |
| ?x@@3PEBHEB |
| ; CHECK: int const *x |
| |
| ?x@@3QEAHEA |
| ; CHECK: int *const x |
| |
| ?x@@3QEBHEB |
| ; CHECK: int const *const x |
| |
| |
| ?x@@3AEBHEB |
| ; CHECK: int const &x |
| |
| ?x@@3PEAUty@@EA |
| ; CHECK: struct ty *x |
| |
| ?x@@3PEATty@@EA |
| ; CHECK: union ty *x |
| |
| ?x@@3PEAUty@@EA |
| ; CHECK: struct ty *x |
| |
| ?x@@3PEAW4ty@@EA |
| ; CHECK: enum ty *x |
| |
| ?x@@3PEAVty@@EA |
| ; CHECK: class ty *x |
| |
| ?x@@3PEAV?$tmpl@H@@EA |
| ; CHECK: class tmpl<int> *x |
| |
| ?x@@3PEAU?$tmpl@H@@EA |
| ; CHECK: struct tmpl<int> *x |
| |
| ?x@@3PEAT?$tmpl@H@@EA |
| ; CHECK: union tmpl<int> *x |
| |
| ?instance@@3Vklass@@A |
| ; CHECK: class klass instance |
| |
| ?instance$initializer$@@3P6AXXZEA |
| ; CHECK: void (__cdecl *instance$initializer$)(void) |
| |
| ??0klass@@QEAA@XZ |
| ; CHECK: __cdecl klass::klass(void) |
| |
| ??1klass@@QEAA@XZ |
| ; CHECK: __cdecl klass::~klass(void) |
| |
| ?x@@YAHPEAVklass@@AEAV1@@Z |
| ; CHECK: int __cdecl x(class klass *, class klass &) |
| |
| ?x@ns@@3PEAV?$klass@HH@1@EA |
| ; CHECK: class ns::klass<int, int> *ns::x |
| |
| ?fn@?$klass@H@ns@@QEBAIXZ |
| ; CHECK: unsigned int __cdecl ns::klass<int>::fn(void) const |
| |
| |
| ??4klass@@QEAAAEBV0@AEBV0@@Z |
| ; CHECK: class klass const & __cdecl klass::operator=(class klass const &) |
| |
| ??7klass@@QEAA_NXZ |
| ; CHECK: bool __cdecl klass::operator!(void) |
| |
| ??8klass@@QEAA_NAEBV0@@Z |
| ; CHECK: bool __cdecl klass::operator==(class klass const &) |
| |
| ??9klass@@QEAA_NAEBV0@@Z |
| ; CHECK: bool __cdecl klass::operator!=(class klass const &) |
| |
| ??Aklass@@QEAAH_K@Z |
| ; CHECK: int __cdecl klass::operator[](unsigned __int64) |
| |
| ??Cklass@@QEAAHXZ |
| ; CHECK: int __cdecl klass::operator->(void) |
| |
| ??Dklass@@QEAAHXZ |
| ; CHECK: int __cdecl klass::operator*(void) |
| |
| ??Eklass@@QEAAHXZ |
| ; CHECK: int __cdecl klass::operator++(void) |
| |
| ??Eklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator++(int) |
| |
| ??Fklass@@QEAAHXZ |
| ; CHECK: int __cdecl klass::operator--(void) |
| |
| ??Fklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator--(int) |
| |
| ??Hklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator+(int) |
| |
| ??Gklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator-(int) |
| |
| ??Iklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator&(int) |
| |
| ??Jklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator->*(int) |
| |
| ??Kklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator/(int) |
| |
| ??Mklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator<(int) |
| |
| ??Nklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator<=(int) |
| |
| ??Oklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator>(int) |
| |
| ??Pklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator>=(int) |
| |
| ??Qklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator,(int) |
| |
| ??Rklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator()(int) |
| |
| ??Sklass@@QEAAHXZ |
| ; CHECK: int __cdecl klass::operator~(void) |
| |
| ??Tklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator^(int) |
| |
| ??Uklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator|(int) |
| |
| ??Vklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator&&(int) |
| |
| ??Wklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator||(int) |
| |
| ??Xklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator*=(int) |
| |
| ??Yklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator+=(int) |
| |
| ??Zklass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator-=(int) |
| |
| ??_0klass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator/=(int) |
| |
| ??_1klass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator%=(int) |
| |
| ??_2klass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator>>=(int) |
| |
| ??_3klass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator<<=(int) |
| |
| ??_6klass@@QEAAHH@Z |
| ; CHECK: int __cdecl klass::operator^=(int) |
| |
| ??6@YAAEBVklass@@AEBV0@H@Z |
| ; CHECK: class klass const & __cdecl operator<<(class klass const &, int) |
| |
| ??5@YAAEBVklass@@AEBV0@_K@Z |
| ; CHECK: class klass const & __cdecl operator>>(class klass const &, unsigned __int64) |
| |
| ??2@YAPEAX_KAEAVklass@@@Z |
| ; CHECK: void * __cdecl operator new(unsigned __int64, class klass &) |
| |
| ??_U@YAPEAX_KAEAVklass@@@Z |
| ; CHECK: void * __cdecl operator new[](unsigned __int64, class klass &) |
| |
| ??3@YAXPEAXAEAVklass@@@Z |
| ; CHECK: void __cdecl operator delete(void *, class klass &) |
| |
| ??_V@YAXPEAXAEAVklass@@@Z |
| ; CHECK: void __cdecl operator delete[](void *, class klass &) |
| |