Home | History | Annotate | Download | only in Demangle
      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
     33 ; CHECK: int (__cdecl *x)(float, double, int)
     34 
     35 ?x@@3P6AHP6AHM@ZN@ZEA
     36 ; CHECK: int (__cdecl *x)(int (__cdecl *)(float), double)
     37 
     38 ?x@@3P6AHP6AHM@Z0@ZEA
     39 ; CHECK: int (__cdecl *x)(int (__cdecl *)(float), int (__cdecl *)(float))
     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 
     68 ?x@@3PEAUty@@EA
     69 ; CHECK: struct ty *x
     70 
     71 ?x@@3PEAW4ty@@EA
     72 ; CHECK: enum ty *x
     73 
     74 ?x@@3PEAVty@@EA
     75 ; CHECK: class ty *x
     76 
     77 ?x@@3PEAV?$tmpl@H@@EA
     78 ; CHECK: class tmpl<int> *x
     79 
     80 ?x@@3PEAU?$tmpl@H@@EA
     81 ; CHECK: struct tmpl<int> *x
     82 
     83 ?x@@3PEAT?$tmpl@H@@EA
     84 ; CHECK: union tmpl<int> *x
     85 
     86 ?instance@@3Vklass@@A
     87 ; CHECK: class klass instance
     88 
     89 ?instance$initializer$@@3P6AXXZEA
     90 ; CHECK: void (__cdecl *instance$initializer$)(void)
     91 
     92 ??0klass@@QEAA@XZ
     93 ; CHECK: __cdecl klass::klass(void)
     94 
     95 ??1klass@@QEAA@XZ
     96 ; CHECK: __cdecl klass::~klass(void)
     97 
     98 ?x@@YAHPEAVklass@@AEAV1@@Z
     99 ; CHECK: int __cdecl x(class klass *, class klass &)
    100 
    101 ?x@ns@@3PEAV?$klass@HH@1@EA
    102 ; CHECK: class ns::klass<int, int> *ns::x
    103 
    104 ?fn@?$klass@H@ns@@QEBAIXZ
    105 ; CHECK: unsigned int __cdecl ns::klass<int>::fn(void) const
    106 
    107 
    108 ??4klass@@QEAAAEBV0@AEBV0@@Z
    109 ; CHECK: class klass const & __cdecl klass::operator=(class klass const &)
    110 
    111 ??7klass@@QEAA_NXZ
    112 ; CHECK: bool __cdecl klass::operator!(void)
    113 
    114 ??8klass@@QEAA_NAEBV0@@Z
    115 ; CHECK: bool __cdecl klass::operator==(class klass const &)
    116 
    117 ??9klass@@QEAA_NAEBV0@@Z
    118 ; CHECK: bool __cdecl klass::operator!=(class klass const &)
    119 
    120 ??Aklass@@QEAAH_K@Z
    121 ; CHECK: int __cdecl klass::operator[](unsigned __int64)
    122 
    123 ??Cklass@@QEAAHXZ
    124 ; CHECK: int __cdecl klass::operator->(void)
    125 
    126 ??Dklass@@QEAAHXZ
    127 ; CHECK: int __cdecl klass::operator*(void)
    128 
    129 ??Eklass@@QEAAHXZ
    130 ; CHECK: int __cdecl klass::operator++(void)
    131 
    132 ??Eklass@@QEAAHH@Z
    133 ; CHECK: int __cdecl klass::operator++(int)
    134 
    135 ??Fklass@@QEAAHXZ
    136 ; CHECK: int __cdecl klass::operator--(void)
    137 
    138 ??Fklass@@QEAAHH@Z
    139 ; CHECK: int __cdecl klass::operator--(int)
    140 
    141 ??Hklass@@QEAAHH@Z
    142 ; CHECK: int __cdecl klass::operator+(int)
    143 
    144 ??Gklass@@QEAAHH@Z
    145 ; CHECK: int __cdecl klass::operator-(int)
    146 
    147 ??Iklass@@QEAAHH@Z
    148 ; CHECK: int __cdecl klass::operator&(int)
    149 
    150 ??Jklass@@QEAAHH@Z
    151 ; CHECK: int __cdecl klass::operator->*(int)
    152 
    153 ??Kklass@@QEAAHH@Z
    154 ; CHECK: int __cdecl klass::operator/(int)
    155 
    156 ??Mklass@@QEAAHH@Z
    157 ; CHECK: int __cdecl klass::operator<(int)
    158 
    159 ??Nklass@@QEAAHH@Z
    160 ; CHECK: int __cdecl klass::operator<=(int)
    161 
    162 ??Oklass@@QEAAHH@Z
    163 ; CHECK: int __cdecl klass::operator>(int)
    164 
    165 ??Pklass@@QEAAHH@Z
    166 ; CHECK: int __cdecl klass::operator>=(int)
    167 
    168 ??Qklass@@QEAAHH@Z
    169 ; CHECK: int __cdecl klass::operator,(int)
    170 
    171 ??Rklass@@QEAAHH@Z
    172 ; CHECK: int __cdecl klass::operator()(int)
    173 
    174 ??Sklass@@QEAAHXZ
    175 ; CHECK: int __cdecl klass::operator~(void)
    176 
    177 ??Tklass@@QEAAHH@Z
    178 ; CHECK: int __cdecl klass::operator^(int)
    179 
    180 ??Uklass@@QEAAHH@Z
    181 ; CHECK: int __cdecl klass::operator|(int)
    182 
    183 ??Vklass@@QEAAHH@Z
    184 ; CHECK: int __cdecl klass::operator&&(int)
    185 
    186 ??Wklass@@QEAAHH@Z
    187 ; CHECK: int __cdecl klass::operator||(int)
    188 
    189 ??Xklass@@QEAAHH@Z
    190 ; CHECK: int __cdecl klass::operator*=(int)
    191 
    192 ??Yklass@@QEAAHH@Z
    193 ; CHECK: int __cdecl klass::operator+=(int)
    194 
    195 ??Zklass@@QEAAHH@Z
    196 ; CHECK: int __cdecl klass::operator-=(int)
    197 
    198 ??_0klass@@QEAAHH@Z
    199 ; CHECK: int __cdecl klass::operator/=(int)
    200 
    201 ??_1klass@@QEAAHH@Z
    202 ; CHECK: int __cdecl klass::operator%=(int)
    203 
    204 ??_2klass@@QEAAHH@Z
    205 ; CHECK: int __cdecl klass::operator>>=(int)
    206 
    207 ??_3klass@@QEAAHH@Z
    208 ; CHECK: int __cdecl klass::operator<<=(int)
    209 
    210 ??_6klass@@QEAAHH@Z
    211 ; CHECK: int __cdecl klass::operator^=(int)
    212 
    213 ??6@YAAEBVklass@@AEBV0@H@Z
    214 ; CHECK: class klass const & __cdecl operator<<(class klass const &, int)
    215 
    216 ??5@YAAEBVklass@@AEBV0@_K@Z
    217 ; CHECK: class klass const & __cdecl operator>>(class klass const &, unsigned __int64)
    218 
    219 ??2@YAPEAX_KAEAVklass@@@Z
    220 ; CHECK: void * __cdecl operator new(unsigned __int64, class klass &)
    221 
    222 ??_U@YAPEAX_KAEAVklass@@@Z
    223 ; CHECK: void * __cdecl operator new[](unsigned __int64, class klass &)
    224 
    225 ??3@YAXPEAXAEAVklass@@@Z
    226 ; CHECK: void __cdecl operator delete(void *, class klass &)
    227 
    228 ??_V@YAXPEAXAEAVklass@@@Z
    229 ; CHECK: void __cdecl operator delete[](void *, class klass &)
    230 
    231