Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 1 | ; 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 Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 33 | ; CHECK: int (__cdecl *x)(float, double, int) |
Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 34 | |
| 35 | ?x@@3P6AHP6AHM@ZN@ZEA |
Zachary Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 36 | ; CHECK: int (__cdecl *x)(int (__cdecl *)(float), double) |
Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 37 | |
| 38 | ?x@@3P6AHP6AHM@Z0@ZEA |
Zachary Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 39 | ; CHECK: int (__cdecl *x)(int (__cdecl *)(float), int (__cdecl *)(float)) |
Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 40 | |
| 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 Turner | 6e3e8a7 | 2018-08-27 03:48:03 +0000 | [diff] [blame] | 68 | ?x@@3PEAVty@@EA |
| 69 | ; CHECK: class ty *x |
Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 70 | |
| 71 | ?x@@3PEAW4ty@@EA |
| 72 | ; CHECK: enum ty *x |
| 73 | |
Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 74 | ?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 Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 87 | ; CHECK: void (__cdecl *instance$initializer$)(void) |
Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 88 | |
| 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 Turner | d4bb30e | 2018-07-26 20:20:10 +0000 | [diff] [blame] | 106 | ; CHECK: class klass const & __cdecl klass::operator=(class klass const &) |
Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 107 | |
| 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 Turner | d4bb30e | 2018-07-26 20:20:10 +0000 | [diff] [blame] | 211 | ; CHECK: class klass const & __cdecl operator<<(class klass const &, int) |
Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 212 | |
| 213 | ??5@YAAEBVklass@@AEBV0@_K@Z |
Zachary Turner | d4bb30e | 2018-07-26 20:20:10 +0000 | [diff] [blame] | 214 | ; CHECK: class klass const & __cdecl operator>>(class klass const &, unsigned __int64) |
Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 215 | |
| 216 | ??2@YAPEAX_KAEAVklass@@@Z |
Zachary Turner | d4bb30e | 2018-07-26 20:20:10 +0000 | [diff] [blame] | 217 | ; CHECK: void * __cdecl operator new(unsigned __int64, class klass &) |
Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 218 | |
| 219 | ??_U@YAPEAX_KAEAVklass@@@Z |
Zachary Turner | d4bb30e | 2018-07-26 20:20:10 +0000 | [diff] [blame] | 220 | ; CHECK: void * __cdecl operator new[](unsigned __int64, class klass &) |
Zachary Turner | 42e40ea | 2018-07-20 17:27:48 +0000 | [diff] [blame] | 221 | |
| 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 Turner | 7977957 | 2018-08-20 23:58:35 +0000 | [diff] [blame] | 228 | ; ?A@?A0x43583946@@3VB@@B |
| 229 | class B const `anonymous namespace'::A |