245 lines · plain
1; RUN: llvm-undname < %s | FileCheck %s2 3; CHECK-NOT: Invalid mangled name4 5?x@@3HA6; CHECK: int x7 8?x@@3PEAHEA9; CHECK: int *x10 11?x@@3PEAPEAHEA12; CHECK: int **x13 14?foo@@3Y123KA15; CHECK: unsigned long foo[3][4]16 17?x@@3PEAY02HEA18; CHECK: int (*x)[3]19 20?x@@3PEAY124HEA21; CHECK: int (*x)[3][5]22 23?x@@3PEAY02$$CBHEA24; CHECK: int const (*x)[3]25 26?x@@3PEAEEA27; CHECK: unsigned char *x28 29?y@@3PEAGEA30; CHECK: unsigned short *y31 32?z@@3PEAKEA33; CHECK: unsigned long *z34 35?x@@3PEAY1NKM@5HEA36; CHECK: int (*x)[3500][6]37 38?x@@YAXMH@Z39; CHECK: void __cdecl x(float, int)40 41?x@@YAXMHZZ42; CHECK: void __cdecl x(float, int, ...)43 44?x@@YAXZZ45; CHECK: void __cdecl x(...)46 47?x@@3P6AHMNH@ZEA48; CHECK: int (__cdecl *x)(float, double, int)49 50?x@@3P6AHP6AHM@ZN@ZEA51; CHECK: int (__cdecl *x)(int (__cdecl *)(float), double)52 53?x@@3P6AHP6AHM@Z0@ZEA54; CHECK: int (__cdecl *x)(int (__cdecl *)(float), int (__cdecl *)(float))55 56?x@ns@@3HA57; CHECK: int ns::x58 59; Microsoft's undname doesn't handle Q correctly or the multiple occurrences60; of the const modifier. So the results here differ, but ours are correct.61?x@@3PEAHEA62; CHECK: int *x63 64?x@@3PEBHEB65; CHECK: int const *x66 67?x@@3QEAHEA68; CHECK: int *const x69 70?x@@3QEBHEB71; CHECK: int const *const x72 73 74?x@@3AEBHEB75; CHECK: int const &x76 77?x@@3PEAUty@@EA78; CHECK: struct ty *x79 80?x@@3PEATty@@EA81; CHECK: union ty *x82 83?x@@3PEAVty@@EA84; CHECK: class ty *x85 86?x@@3PEAW4ty@@EA87; CHECK: enum ty *x88 89?x@@3PEAV?$tmpl@H@@EA90; CHECK: class tmpl<int> *x91 92?x@@3PEAU?$tmpl@H@@EA93; CHECK: struct tmpl<int> *x94 95?x@@3PEAT?$tmpl@H@@EA96; CHECK: union tmpl<int> *x97 98?instance@@3Vklass@@A99; CHECK: class klass instance100 101?instance$initializer$@@3P6AXXZEA102; CHECK: void (__cdecl *instance$initializer$)(void)103 104??0klass@@QEAA@XZ105; CHECK: __cdecl klass::klass(void)106 107??1klass@@QEAA@XZ108; CHECK: __cdecl klass::~klass(void)109 110?x@@YAHPEAVklass@@AEAV1@@Z111; CHECK: int __cdecl x(class klass *, class klass &)112 113?x@ns@@3PEAV?$klass@HH@1@EA114; CHECK: class ns::klass<int, int> *ns::x115 116?fn@?$klass@H@ns@@QEBAIXZ117; CHECK: unsigned int __cdecl ns::klass<int>::fn(void) const118 119 120??4klass@@QEAAAEBV0@AEBV0@@Z121; CHECK: class klass const & __cdecl klass::operator=(class klass const &)122 123??7klass@@QEAA_NXZ124; CHECK: bool __cdecl klass::operator!(void)125 126??8klass@@QEAA_NAEBV0@@Z127; CHECK: bool __cdecl klass::operator==(class klass const &)128 129??9klass@@QEAA_NAEBV0@@Z130; CHECK: bool __cdecl klass::operator!=(class klass const &)131 132??Aklass@@QEAAH_K@Z133; CHECK: int __cdecl klass::operator[](unsigned __int64)134 135??Cklass@@QEAAHXZ136; CHECK: int __cdecl klass::operator->(void)137 138??Dklass@@QEAAHXZ139; CHECK: int __cdecl klass::operator*(void)140 141??Eklass@@QEAAHXZ142; CHECK: int __cdecl klass::operator++(void)143 144??Eklass@@QEAAHH@Z145; CHECK: int __cdecl klass::operator++(int)146 147??Fklass@@QEAAHXZ148; CHECK: int __cdecl klass::operator--(void)149 150??Fklass@@QEAAHH@Z151; CHECK: int __cdecl klass::operator--(int)152 153??Hklass@@QEAAHH@Z154; CHECK: int __cdecl klass::operator+(int)155 156??Gklass@@QEAAHH@Z157; CHECK: int __cdecl klass::operator-(int)158 159??Iklass@@QEAAHH@Z160; CHECK: int __cdecl klass::operator&(int)161 162??Jklass@@QEAAHH@Z163; CHECK: int __cdecl klass::operator->*(int)164 165??Kklass@@QEAAHH@Z166; CHECK: int __cdecl klass::operator/(int)167 168??Mklass@@QEAAHH@Z169; CHECK: int __cdecl klass::operator<(int)170 171??Nklass@@QEAAHH@Z172; CHECK: int __cdecl klass::operator<=(int)173 174??Oklass@@QEAAHH@Z175; CHECK: int __cdecl klass::operator>(int)176 177??Pklass@@QEAAHH@Z178; CHECK: int __cdecl klass::operator>=(int)179 180??Qklass@@QEAAHH@Z181; CHECK: int __cdecl klass::operator,(int)182 183??Rklass@@QEAAHH@Z184; CHECK: int __cdecl klass::operator()(int)185 186??Sklass@@QEAAHXZ187; CHECK: int __cdecl klass::operator~(void)188 189??Tklass@@QEAAHH@Z190; CHECK: int __cdecl klass::operator^(int)191 192??Uklass@@QEAAHH@Z193; CHECK: int __cdecl klass::operator|(int)194 195??Vklass@@QEAAHH@Z196; CHECK: int __cdecl klass::operator&&(int)197 198??Wklass@@QEAAHH@Z199; CHECK: int __cdecl klass::operator||(int)200 201??Xklass@@QEAAHH@Z202; CHECK: int __cdecl klass::operator*=(int)203 204??Yklass@@QEAAHH@Z205; CHECK: int __cdecl klass::operator+=(int)206 207??Zklass@@QEAAHH@Z208; CHECK: int __cdecl klass::operator-=(int)209 210??_0klass@@QEAAHH@Z211; CHECK: int __cdecl klass::operator/=(int)212 213??_1klass@@QEAAHH@Z214; CHECK: int __cdecl klass::operator%=(int)215 216??_2klass@@QEAAHH@Z217; CHECK: int __cdecl klass::operator>>=(int)218 219??_3klass@@QEAAHH@Z220; CHECK: int __cdecl klass::operator<<=(int)221 222??_6klass@@QEAAHH@Z223; CHECK: int __cdecl klass::operator^=(int)224 225??6@YAAEBVklass@@AEBV0@H@Z226; CHECK: class klass const & __cdecl operator<<(class klass const &, int)227 228??5@YAAEBVklass@@AEBV0@_K@Z229; CHECK: class klass const & __cdecl operator>>(class klass const &, unsigned __int64)230 231??2@YAPEAX_KAEAVklass@@@Z232; CHECK: void * __cdecl operator new(unsigned __int64, class klass &)233 234??_U@YAPEAX_KAEAVklass@@@Z235; CHECK: void * __cdecl operator new[](unsigned __int64, class klass &)236 237??3@YAXPEAXAEAVklass@@@Z238; CHECK: void __cdecl operator delete(void *, class klass &)239 240??_V@YAXPEAXAEAVklass@@@Z241; CHECK: void __cdecl operator delete[](void *, class klass &)242 243?A@?A0x43583946@@3VB@@B244; CHECK: class B const `anonymous namespace'::A245