1; These tests are based on clang/test/CodeGenCXX/mangle-ms-cxx11.cpp 2 3; RUN: llvm-undname < %s | FileCheck %s 4 5; CHECK-NOT: Invalid mangled name 6 7?f@@3V?$C@H@@A 8; CHECK: class C<int> f 9 10??0?$Class@VTypename@@@@QAE@XZ 11; CHECK: __thiscall Class<class Typename>::Class<class Typename>(void) 12??0?$Class@VTypename@@@@QEAA@XZ 13; CHECK: __cdecl Class<class Typename>::Class<class Typename>(void) 14 15??0?$Class@$$CBVTypename@@@@QAE@XZ 16; CHECK: __thiscall Class<class Typename const>::Class<class Typename const>(void) 17??0?$Class@$$CBVTypename@@@@QEAA@XZ 18; CHECK: __cdecl Class<class Typename const>::Class<class Typename const>(void) 19 20??0?$Class@$$CCVTypename@@@@QAE@XZ 21; CHECK: __thiscall Class<class Typename volatile>::Class<class Typename volatile>(void) 22??0?$Class@$$CCVTypename@@@@QEAA@XZ 23; CHECK: __cdecl Class<class Typename volatile>::Class<class Typename volatile>(void) 24 25??0?$Class@$$CDVTypename@@@@QAE@XZ 26; CHECK: __thiscall Class<class Typename const volatile>::Class<class Typename const volatile>(void) 27??0?$Class@$$CDVTypename@@@@QEAA@XZ 28; CHECK: __cdecl Class<class Typename const volatile>::Class<class Typename const volatile>(void) 29 30??0?$Class@V?$Nested@VTypename@@@@@@QAE@XZ 31; CHECK: __thiscall Class<class Nested<class Typename>>::Class<class Nested<class Typename>>(void) 32??0?$Class@V?$Nested@VTypename@@@@@@QEAA@XZ 33; CHECK: __cdecl Class<class Nested<class Typename>>::Class<class Nested<class Typename>>(void) 34 35??0?$Class@QAH@@QAE@XZ 36; CHECK: __thiscall Class<int *const>::Class<int *const>(void) 37??0?$Class@QEAH@@QEAA@XZ 38; CHECK: __cdecl Class<int *const>::Class<int *const>(void) 39 40??0?$Class@$$A6AHXZ@@QAE@XZ 41; CHECK: __thiscall Class<int __cdecl(void)>::Class<int __cdecl(void)>(void) 42??0?$Class@$$A6AHXZ@@QEAA@XZ 43; CHECK: __cdecl Class<int __cdecl(void)>::Class<int __cdecl(void)>(void) 44 45??0?$Class@$$BY0A@H@@QAE@XZ 46; CHECK: __thiscall Class<int[]>::Class<int[]>(void) 47??0?$Class@$$BY0A@H@@QEAA@XZ 48; CHECK: __cdecl Class<int[]>::Class<int[]>(void) 49 50??0?$Class@$$BY04H@@QAE@XZ 51; CHECK: __thiscall Class<int[5]>::Class<int[5]>(void) 52??0?$Class@$$BY04H@@QEAA@XZ 53; CHECK: __cdecl Class<int[5]>::Class<int[5]>(void) 54 55??0?$Class@$$BY04$$CBH@@QAE@XZ 56; CHECK: __thiscall Class<int const[5]>::Class<int const[5]>(void) 57??0?$Class@$$BY04$$CBH@@QEAA@XZ 58; CHECK: __cdecl Class<int const[5]>::Class<int const[5]>(void) 59 60??0?$Class@$$BY04QAH@@QAE@XZ 61; CHECK: __thiscall Class<int *const[5]>::Class<int *const[5]>(void) 62??0?$Class@$$BY04QEAH@@QEAA@XZ 63; CHECK: __cdecl Class<int *const[5]>::Class<int *const[5]>(void) 64 65??0?$BoolTemplate@$0A@@@QAE@XZ 66; CHECK: __thiscall BoolTemplate<0>::BoolTemplate<0>(void) 67??0?$BoolTemplate@$0A@@@QEAA@XZ 68; CHECK: __cdecl BoolTemplate<0>::BoolTemplate<0>(void) 69 70??0?$BoolTemplate@$00@@QAE@XZ 71; CHECK: __thiscall BoolTemplate<1>::BoolTemplate<1>(void) 72??0?$BoolTemplate@$00@@QEAA@XZ 73; CHECK: __cdecl BoolTemplate<1>::BoolTemplate<1>(void) 74 75??$Foo@H@?$BoolTemplate@$00@@QAEXH@Z 76; CHECK: void __thiscall BoolTemplate<1>::Foo<int>(int) 77??$Foo@H@?$BoolTemplate@$00@@QEAAXH@Z 78; CHECK: void __cdecl BoolTemplate<1>::Foo<int>(int) 79 80??0?$IntTemplate@$0A@@@QAE@XZ 81; CHECK: __thiscall IntTemplate<0>::IntTemplate<0>(void) 82??0?$IntTemplate@$0A@@@QEAA@XZ 83; CHECK: __cdecl IntTemplate<0>::IntTemplate<0>(void) 84 85??0?$IntTemplate@$04@@QAE@XZ 86; CHECK: __thiscall IntTemplate<5>::IntTemplate<5>(void) 87??0?$IntTemplate@$04@@QEAA@XZ 88; CHECK: __cdecl IntTemplate<5>::IntTemplate<5>(void) 89 90??0?$IntTemplate@$0L@@@QAE@XZ 91; CHECK: __thiscall IntTemplate<11>::IntTemplate<11>(void) 92??0?$IntTemplate@$0L@@@QEAA@XZ 93; CHECK: __cdecl IntTemplate<11>::IntTemplate<11>(void) 94 95??0?$IntTemplate@$0BAA@@@QAE@XZ 96; CHECK: __thiscall IntTemplate<256>::IntTemplate<256>(void) 97??0?$IntTemplate@$0BAA@@@QEAA@XZ 98; CHECK: __cdecl IntTemplate<256>::IntTemplate<256>(void) 99 100??0?$IntTemplate@$0CAB@@@QAE@XZ 101; CHECK: __thiscall IntTemplate<513>::IntTemplate<513>(void) 102??0?$IntTemplate@$0CAB@@@QEAA@XZ 103; CHECK: __cdecl IntTemplate<513>::IntTemplate<513>(void) 104 105??0?$IntTemplate@$0EAC@@@QAE@XZ 106; CHECK: __thiscall IntTemplate<1026>::IntTemplate<1026>(void) 107??0?$IntTemplate@$0EAC@@@QEAA@XZ 108; CHECK: __cdecl IntTemplate<1026>::IntTemplate<1026>(void) 109 110??0?$IntTemplate@$0PPPP@@@QAE@XZ 111; CHECK: __thiscall IntTemplate<65535>::IntTemplate<65535>(void) 112??0?$IntTemplate@$0PPPP@@@QEAA@XZ 113; CHECK: __cdecl IntTemplate<65535>::IntTemplate<65535>(void) 114 115??0?$IntTemplate@$0?0@@QAE@XZ 116; CHECK: __thiscall IntTemplate<-1>::IntTemplate<-1>(void) 117??0?$IntTemplate@$0?0@@QEAA@XZ 118; CHECK: __cdecl IntTemplate<-1>::IntTemplate<-1>(void) 119 120??0?$IntTemplate@$0?8@@QAE@XZ 121; CHECK: __thiscall IntTemplate<-9>::IntTemplate<-9>(void) 122??0?$IntTemplate@$0?8@@QEAA@XZ 123; CHECK: __cdecl IntTemplate<-9>::IntTemplate<-9>(void) 124 125??0?$IntTemplate@$0?9@@QAE@XZ 126; CHECK: __thiscall IntTemplate<-10>::IntTemplate<-10>(void) 127??0?$IntTemplate@$0?9@@QEAA@XZ 128; CHECK: __cdecl IntTemplate<-10>::IntTemplate<-10>(void) 129 130??0?$IntTemplate@$0?L@@@QAE@XZ 131; CHECK: __thiscall IntTemplate<-11>::IntTemplate<-11>(void) 132??0?$IntTemplate@$0?L@@@QEAA@XZ 133; CHECK: __cdecl IntTemplate<-11>::IntTemplate<-11>(void) 134 135??0?$UnsignedIntTemplate@$0PPPPPPPP@@@QAE@XZ 136; CHECK: __thiscall UnsignedIntTemplate<4294967295>::UnsignedIntTemplate<4294967295>(void) 137??0?$UnsignedIntTemplate@$0PPPPPPPP@@@QEAA@XZ 138; CHECK: __cdecl UnsignedIntTemplate<4294967295>::UnsignedIntTemplate<4294967295>(void) 139 140??0?$LongLongTemplate@$0?IAAAAAAAAAAAAAAA@@@QAE@XZ 141; CHECK: __thiscall LongLongTemplate<-9223372036854775808>::LongLongTemplate<-9223372036854775808>(void) 142??0?$LongLongTemplate@$0?IAAAAAAAAAAAAAAA@@@QEAA@XZ 143; CHECK: __cdecl LongLongTemplate<-9223372036854775808>::LongLongTemplate<-9223372036854775808>(void) 144 145??0?$LongLongTemplate@$0HPPPPPPPPPPPPPPP@@@QAE@XZ 146; CHECK: __thiscall LongLongTemplate<9223372036854775807>::LongLongTemplate<9223372036854775807>(void) 147??0?$LongLongTemplate@$0HPPPPPPPPPPPPPPP@@@QEAA@XZ 148; CHECK: __cdecl LongLongTemplate<9223372036854775807>::LongLongTemplate<9223372036854775807>(void) 149 150; -1 is indistinguishable from uint64_max in this encoding. 151??0?$UnsignedLongLongTemplate@$0?0@@QAE@XZ 152; CHECK: __thiscall UnsignedLongLongTemplate<-1>::UnsignedLongLongTemplate<-1>(void) 153??0?$UnsignedLongLongTemplate@$0?0@@QEAA@XZ 154; CHECK: __cdecl UnsignedLongLongTemplate<-1>::UnsignedLongLongTemplate<-1>(void) 155 156??$foo@H@space@@YAABHABH@Z 157; CHECK: int const & __cdecl space::foo<int>(int const &) 158??$foo@H@space@@YAAEBHAEBH@Z 159; CHECK: int const & __cdecl space::foo<int>(int const &) 160 161??$FunctionPointerTemplate@$1?spam@@YAXXZ@@YAXXZ 162; CHECK: void __cdecl FunctionPointerTemplate<&void __cdecl spam(void)>(void) 163 164??$variadic_fn_template@HHHH@@YAXABH000@Z 165; CHECK: void __cdecl variadic_fn_template<int, int, int, int>(int const &, int const &, int const &, int const &) 166??$variadic_fn_template@HHD$$BY01D@@YAXABH0ABDAAY01$$CBD@Z 167; CHECK: void __cdecl variadic_fn_template<int, int, char, char[2]>(int const &, int const &, char const &, char const (&)[2] 168 169??0?$VariadicClass@HD_N@@QAE@XZ 170; CHECK: __thiscall VariadicClass<int, char, bool>::VariadicClass<int, char, bool>(void) 171 172??0?$VariadicClass@_NDH@@QAE@XZ 173; CHECK: __thiscall VariadicClass<bool, char, int>::VariadicClass<bool, char, int>(void) 174 175 176?template_template_fun@@YAXU?$Type@U?$Thing@USecond@@$00@@USecond@@@@@Z 177; CHECK: void __cdecl template_template_fun(struct Type<struct Thing<struct Second, 1>, struct Second>) 178 179??$template_template_specialization@$$A6AXU?$Type@U?$Thing@USecond@@$00@@USecond@@@@@Z@@YAXXZ 180; CHECK: void __cdecl template_template_specialization<void __cdecl(struct Type<struct Thing<struct Second, 1>, struct Second>)>(void) 181 182?f@@YAXU?$S1@$0A@@@@Z 183; CHECK: void __cdecl f(struct S1<0>) 184 185?recref@@YAXU?$type1@$E?inst@@3Urecord@@B@@@Z 186; CHECK: void __cdecl recref(struct type1<struct record const inst>) 187 188?fun@@YAXU?$UUIDType1@Uuuid@@$1?_GUID_12345678_1234_1234_1234_1234567890ab@@3U__s_GUID@@B@@@Z 189; CHECK: void __cdecl fun(struct UUIDType1<struct uuid, &struct __s_GUID const _GUID_12345678_1234_1234_1234_1234567890ab>) 190?fun@@YAXU?$UUIDType2@Uuuid@@$E?_GUID_12345678_1234_1234_1234_1234567890ab@@3U__s_GUID@@B@@@Z 191; CHECK: void __cdecl fun(struct UUIDType2<struct uuid, struct __s_GUID const _GUID_12345678_1234_1234_1234_1234567890ab>) 192 193?FunctionDefinedWithInjectedName@@YAXU?$TypeWithFriendDefinition@H@@@Z 194; CHECK: void __cdecl FunctionDefinedWithInjectedName(struct TypeWithFriendDefinition<int>) 195 196?bar@?$UUIDType4@$1?_GUID_12345678_1234_1234_1234_1234567890ab@@3U__s_GUID@@B@@QAEXXZ 197; CHECK: void __thiscall UUIDType4<&struct __s_GUID const _GUID_12345678_1234_1234_1234_1234567890ab>::bar(void) 198 199??$f@US@@$1?g@1@QEAAXXZ@@YAXXZ 200; CHECK: void __cdecl f<struct S, &public: void __cdecl S::g(void)>(void) 201 202??$?0N@?$Foo@H@@QEAA@N@Z 203; CHECK: __cdecl Foo<int>::Foo<int><double>(double) 204