1f435a7eaSZachary Turner; RUN: llvm-undname < %s | FileCheck %s 2f435a7eaSZachary Turner 3f435a7eaSZachary Turner; CHECK-NOT: Invalid mangled name 4f435a7eaSZachary Turner 5f435a7eaSZachary Turner?x@@3HA 6f435a7eaSZachary Turner; CHECK: int x 7f435a7eaSZachary Turner 8f435a7eaSZachary Turner?x@@3PEAHEA 9f435a7eaSZachary Turner; CHECK: int *x 10f435a7eaSZachary Turner 11f435a7eaSZachary Turner?x@@3PEAPEAHEA 12f435a7eaSZachary Turner; CHECK: int **x 13f435a7eaSZachary Turner 14880d21d3SNico Weber?foo@@3Y123KA 15880d21d3SNico Weber; CHECK: unsigned long foo[3][4] 16880d21d3SNico Weber 17f435a7eaSZachary Turner?x@@3PEAY02HEA 18f435a7eaSZachary Turner; CHECK: int (*x)[3] 19f435a7eaSZachary Turner 20f435a7eaSZachary Turner?x@@3PEAY124HEA 21f435a7eaSZachary Turner; CHECK: int (*x)[3][5] 22f435a7eaSZachary Turner 23f435a7eaSZachary Turner?x@@3PEAY02$$CBHEA 24f435a7eaSZachary Turner; CHECK: int const (*x)[3] 25f435a7eaSZachary Turner 26f435a7eaSZachary Turner?x@@3PEAEEA 27f435a7eaSZachary Turner; CHECK: unsigned char *x 28f435a7eaSZachary Turner 29869308ddSNico Weber?y@@3PEAGEA 30869308ddSNico Weber; CHECK: unsigned short *y 31869308ddSNico Weber 32869308ddSNico Weber?z@@3PEAKEA 33869308ddSNico Weber; CHECK: unsigned long *z 34869308ddSNico Weber 35f435a7eaSZachary Turner?x@@3PEAY1NKM@5HEA 36f435a7eaSZachary Turner; CHECK: int (*x)[3500][6] 37f435a7eaSZachary Turner 38f435a7eaSZachary Turner?x@@YAXMH@Z 39f435a7eaSZachary Turner; CHECK: void __cdecl x(float, int) 40f435a7eaSZachary Turner 4146385484SNico Weber?x@@YAXMHZZ 42*1dce8263SNico Weber; CHECK: void __cdecl x(float, int, ...) 43*1dce8263SNico Weber 44*1dce8263SNico Weber?x@@YAXZZ 45*1dce8263SNico Weber; CHECK: void __cdecl x(...) 4646385484SNico Weber 47f435a7eaSZachary Turner?x@@3P6AHMNH@ZEA 48024e1762SZachary Turner; CHECK: int (__cdecl *x)(float, double, int) 49f435a7eaSZachary Turner 50f435a7eaSZachary Turner?x@@3P6AHP6AHM@ZN@ZEA 51024e1762SZachary Turner; CHECK: int (__cdecl *x)(int (__cdecl *)(float), double) 52f435a7eaSZachary Turner 53f435a7eaSZachary Turner?x@@3P6AHP6AHM@Z0@ZEA 54024e1762SZachary Turner; CHECK: int (__cdecl *x)(int (__cdecl *)(float), int (__cdecl *)(float)) 55f435a7eaSZachary Turner 56f435a7eaSZachary Turner?x@ns@@3HA 57f435a7eaSZachary Turner; CHECK: int ns::x 58f435a7eaSZachary Turner 59f435a7eaSZachary Turner; Microsoft's undname doesn't handle Q correctly or the multiple occurrences 60f435a7eaSZachary Turner; of the const modifier. So the results here differ, but ours are correct. 61f435a7eaSZachary Turner?x@@3PEAHEA 62f435a7eaSZachary Turner; CHECK: int *x 63f435a7eaSZachary Turner 64f435a7eaSZachary Turner?x@@3PEBHEB 65f435a7eaSZachary Turner; CHECK: int const *x 66f435a7eaSZachary Turner 67f435a7eaSZachary Turner?x@@3QEAHEA 68f435a7eaSZachary Turner; CHECK: int *const x 69f435a7eaSZachary Turner 70f435a7eaSZachary Turner?x@@3QEBHEB 71f435a7eaSZachary Turner; CHECK: int const *const x 72f435a7eaSZachary Turner 73f435a7eaSZachary Turner 74f435a7eaSZachary Turner?x@@3AEBHEB 75f435a7eaSZachary Turner; CHECK: int const &x 76f435a7eaSZachary Turner 77f435a7eaSZachary Turner?x@@3PEAUty@@EA 78f435a7eaSZachary Turner; CHECK: struct ty *x 79f435a7eaSZachary Turner 80f435a7eaSZachary Turner?x@@3PEATty@@EA 81f435a7eaSZachary Turner; CHECK: union ty *x 82f435a7eaSZachary Turner 8303312863SZachary Turner?x@@3PEAVty@@EA 8403312863SZachary Turner; CHECK: class ty *x 85f435a7eaSZachary Turner 86f435a7eaSZachary Turner?x@@3PEAW4ty@@EA 87f435a7eaSZachary Turner; CHECK: enum ty *x 88f435a7eaSZachary Turner 89f435a7eaSZachary Turner?x@@3PEAV?$tmpl@H@@EA 90f435a7eaSZachary Turner; CHECK: class tmpl<int> *x 91f435a7eaSZachary Turner 92f435a7eaSZachary Turner?x@@3PEAU?$tmpl@H@@EA 93f435a7eaSZachary Turner; CHECK: struct tmpl<int> *x 94f435a7eaSZachary Turner 95f435a7eaSZachary Turner?x@@3PEAT?$tmpl@H@@EA 96f435a7eaSZachary Turner; CHECK: union tmpl<int> *x 97f435a7eaSZachary Turner 98f435a7eaSZachary Turner?instance@@3Vklass@@A 99f435a7eaSZachary Turner; CHECK: class klass instance 100f435a7eaSZachary Turner 101f435a7eaSZachary Turner?instance$initializer$@@3P6AXXZEA 102024e1762SZachary Turner; CHECK: void (__cdecl *instance$initializer$)(void) 103f435a7eaSZachary Turner 104f435a7eaSZachary Turner??0klass@@QEAA@XZ 105f435a7eaSZachary Turner; CHECK: __cdecl klass::klass(void) 106f435a7eaSZachary Turner 107f435a7eaSZachary Turner??1klass@@QEAA@XZ 108f435a7eaSZachary Turner; CHECK: __cdecl klass::~klass(void) 109f435a7eaSZachary Turner 110f435a7eaSZachary Turner?x@@YAHPEAVklass@@AEAV1@@Z 111f435a7eaSZachary Turner; CHECK: int __cdecl x(class klass *, class klass &) 112f435a7eaSZachary Turner 113f435a7eaSZachary Turner?x@ns@@3PEAV?$klass@HH@1@EA 114f435a7eaSZachary Turner; CHECK: class ns::klass<int, int> *ns::x 115f435a7eaSZachary Turner 116f435a7eaSZachary Turner?fn@?$klass@H@ns@@QEBAIXZ 117f435a7eaSZachary Turner; CHECK: unsigned int __cdecl ns::klass<int>::fn(void) const 118f435a7eaSZachary Turner 119f435a7eaSZachary Turner 120f435a7eaSZachary Turner??4klass@@QEAAAEBV0@AEBV0@@Z 121f435a7eaSZachary Turner; CHECK: class klass const & __cdecl klass::operator=(class klass const &) 122f435a7eaSZachary Turner 123f435a7eaSZachary Turner??7klass@@QEAA_NXZ 124f435a7eaSZachary Turner; CHECK: bool __cdecl klass::operator!(void) 125f435a7eaSZachary Turner 126f435a7eaSZachary Turner??8klass@@QEAA_NAEBV0@@Z 127f435a7eaSZachary Turner; CHECK: bool __cdecl klass::operator==(class klass const &) 128f435a7eaSZachary Turner 129f435a7eaSZachary Turner??9klass@@QEAA_NAEBV0@@Z 130f435a7eaSZachary Turner; CHECK: bool __cdecl klass::operator!=(class klass const &) 131f435a7eaSZachary Turner 132f435a7eaSZachary Turner??Aklass@@QEAAH_K@Z 133f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator[](unsigned __int64) 134f435a7eaSZachary Turner 135f435a7eaSZachary Turner??Cklass@@QEAAHXZ 136f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator->(void) 137f435a7eaSZachary Turner 138f435a7eaSZachary Turner??Dklass@@QEAAHXZ 139f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator*(void) 140f435a7eaSZachary Turner 141f435a7eaSZachary Turner??Eklass@@QEAAHXZ 142f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator++(void) 143f435a7eaSZachary Turner 144f435a7eaSZachary Turner??Eklass@@QEAAHH@Z 145f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator++(int) 146f435a7eaSZachary Turner 147f435a7eaSZachary Turner??Fklass@@QEAAHXZ 148f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator--(void) 149f435a7eaSZachary Turner 150f435a7eaSZachary Turner??Fklass@@QEAAHH@Z 151f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator--(int) 152f435a7eaSZachary Turner 153f435a7eaSZachary Turner??Hklass@@QEAAHH@Z 154f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator+(int) 155f435a7eaSZachary Turner 156f435a7eaSZachary Turner??Gklass@@QEAAHH@Z 157f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator-(int) 158f435a7eaSZachary Turner 159f435a7eaSZachary Turner??Iklass@@QEAAHH@Z 160f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator&(int) 161f435a7eaSZachary Turner 162f435a7eaSZachary Turner??Jklass@@QEAAHH@Z 163f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator->*(int) 164f435a7eaSZachary Turner 165f435a7eaSZachary Turner??Kklass@@QEAAHH@Z 166f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator/(int) 167f435a7eaSZachary Turner 168f435a7eaSZachary Turner??Mklass@@QEAAHH@Z 169f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator<(int) 170f435a7eaSZachary Turner 171f435a7eaSZachary Turner??Nklass@@QEAAHH@Z 172f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator<=(int) 173f435a7eaSZachary Turner 174f435a7eaSZachary Turner??Oklass@@QEAAHH@Z 175f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator>(int) 176f435a7eaSZachary Turner 177f435a7eaSZachary Turner??Pklass@@QEAAHH@Z 178f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator>=(int) 179f435a7eaSZachary Turner 180f435a7eaSZachary Turner??Qklass@@QEAAHH@Z 181f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator,(int) 182f435a7eaSZachary Turner 183f435a7eaSZachary Turner??Rklass@@QEAAHH@Z 184f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator()(int) 185f435a7eaSZachary Turner 186f435a7eaSZachary Turner??Sklass@@QEAAHXZ 187f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator~(void) 188f435a7eaSZachary Turner 189f435a7eaSZachary Turner??Tklass@@QEAAHH@Z 190f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator^(int) 191f435a7eaSZachary Turner 192f435a7eaSZachary Turner??Uklass@@QEAAHH@Z 193f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator|(int) 194f435a7eaSZachary Turner 195f435a7eaSZachary Turner??Vklass@@QEAAHH@Z 196f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator&&(int) 197f435a7eaSZachary Turner 198f435a7eaSZachary Turner??Wklass@@QEAAHH@Z 199f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator||(int) 200f435a7eaSZachary Turner 201f435a7eaSZachary Turner??Xklass@@QEAAHH@Z 202f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator*=(int) 203f435a7eaSZachary Turner 204f435a7eaSZachary Turner??Yklass@@QEAAHH@Z 205f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator+=(int) 206f435a7eaSZachary Turner 207f435a7eaSZachary Turner??Zklass@@QEAAHH@Z 208f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator-=(int) 209f435a7eaSZachary Turner 210f435a7eaSZachary Turner??_0klass@@QEAAHH@Z 211f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator/=(int) 212f435a7eaSZachary Turner 213f435a7eaSZachary Turner??_1klass@@QEAAHH@Z 214f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator%=(int) 215f435a7eaSZachary Turner 216f435a7eaSZachary Turner??_2klass@@QEAAHH@Z 217f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator>>=(int) 218f435a7eaSZachary Turner 219f435a7eaSZachary Turner??_3klass@@QEAAHH@Z 220f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator<<=(int) 221f435a7eaSZachary Turner 222f435a7eaSZachary Turner??_6klass@@QEAAHH@Z 223f435a7eaSZachary Turner; CHECK: int __cdecl klass::operator^=(int) 224f435a7eaSZachary Turner 225f435a7eaSZachary Turner??6@YAAEBVklass@@AEBV0@H@Z 226f435a7eaSZachary Turner; CHECK: class klass const & __cdecl operator<<(class klass const &, int) 227f435a7eaSZachary Turner 228f435a7eaSZachary Turner??5@YAAEBVklass@@AEBV0@_K@Z 229f435a7eaSZachary Turner; CHECK: class klass const & __cdecl operator>>(class klass const &, unsigned __int64) 230f435a7eaSZachary Turner 231f435a7eaSZachary Turner??2@YAPEAX_KAEAVklass@@@Z 232f435a7eaSZachary Turner; CHECK: void * __cdecl operator new(unsigned __int64, class klass &) 233f435a7eaSZachary Turner 234f435a7eaSZachary Turner??_U@YAPEAX_KAEAVklass@@@Z 235f435a7eaSZachary Turner; CHECK: void * __cdecl operator new[](unsigned __int64, class klass &) 236f435a7eaSZachary Turner 237f435a7eaSZachary Turner??3@YAXPEAXAEAVklass@@@Z 238f435a7eaSZachary Turner; CHECK: void __cdecl operator delete(void *, class klass &) 239f435a7eaSZachary Turner 240f435a7eaSZachary Turner??_V@YAXPEAXAEAVklass@@@Z 241f435a7eaSZachary Turner; CHECK: void __cdecl operator delete[](void *, class klass &) 242f435a7eaSZachary Turner 2435961b020SNico Weber?A@?A0x43583946@@3VB@@B 2445961b020SNico Weber; CHECK: class B const `anonymous namespace'::A 245