diff options
Diffstat (limited to 'llvm/test/Demangle/ms-basic.test')
-rw-r--r-- | llvm/test/Demangle/ms-basic.test | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/llvm/test/Demangle/ms-basic.test b/llvm/test/Demangle/ms-basic.test new file mode 100644 index 00000000000..17694b90284 --- /dev/null +++ b/llvm/test/Demangle/ms-basic.test @@ -0,0 +1,230 @@ +; 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 &) + |