1; RUN: llvm-undname < %s | FileCheck %s 2 3; CHECK-NOT: Invalid mangled name 4 5??$CallMethod@UC@NegativeNVOffset@@$I??_912@$BA@AEPPPPPPPM@A@@@YAXAAUC@NegativeNVOffset@@@Z 6; CHECK: void __cdecl CallMethod<struct NegativeNVOffset::C, {[thunk]: __thiscall NegativeNVOffset::C::`vcall'{0, {flat}}, 4294967292, 0}>(struct NegativeNVOffset::C &) 7 8??$CallMethod@UM@@$0A@@@YAXAAUM@@@Z 9; CHECK: void __cdecl CallMethod<struct M, 0>(struct M &) 10 11??$CallMethod@UM@@$H??_91@$BA@AEA@@@YAXAAUM@@@Z 12; CHECK: void __cdecl CallMethod<struct M, {[thunk]: __thiscall M::`vcall'{0, {flat}}, 0}>(struct M &) 13 14??$CallMethod@UM@@$H?f@1@QAEXXZA@@@YAXAAUM@@@Z 15; CHECK: void __cdecl CallMethod<struct M, {public: void __thiscall M::f(void), 0}>(struct M &) 16 17??$CallMethod@UO@@$H??_91@$BA@AE3@@YAXAAUO@@@Z 18; CHECK: void __cdecl CallMethod<struct O, {[thunk]: __thiscall O::`vcall'{0, {flat}}, 4}>(struct O &) 19 20??$CallMethod@US@@$0A@@@YAXAAUS@@@Z 21; CHECK: void __cdecl CallMethod<struct S, 0>(struct S &) 22 23??$CallMethod@US@@$1??_91@$BA@AE@@YAXAAUS@@@Z 24; CHECK: void __cdecl CallMethod<struct S, &[thunk]: __thiscall S::`vcall'{0, {flat}}>(struct S &) 25 26??$CallMethod@US@@$1?f@1@QAEXXZ@@YAXAAUS@@@Z 27; CHECK: void __cdecl CallMethod<struct S, &public: void __thiscall S::f(void)>(struct S &) 28 29??$CallMethod@UU@@$0A@@@YAXAAUU@@@Z 30; CHECK: void __cdecl CallMethod<struct U, 0>(struct U &) 31 32??$CallMethod@UU@@$J??_91@$BA@AEA@A@A@@@YAXAAUU@@@Z 33; CHECK: void __cdecl CallMethod<struct U, {[thunk]: __thiscall U::`vcall'{0, {flat}}, 0, 0, 0}>(struct U &) 34 35??$CallMethod@UU@@$J?f@1@QAEXXZA@A@A@@@YAXAAUU@@@Z 36; CHECK: void __cdecl CallMethod<struct U, {public: void __thiscall U::f(void), 0, 0, 0}>(struct U &) 37 38??$CallMethod@UV@@$0A@@@YAXAAUV@@@Z 39; CHECK: void __cdecl CallMethod<struct V, 0>(struct V &) 40 41??$CallMethod@UV@@$I??_91@$BA@AEA@A@@@YAXAAUV@@@Z 42; CHECK: void __cdecl CallMethod<struct V, {[thunk]: __thiscall V::`vcall'{0, {flat}}, 0, 0}>(struct V &) 43 44??$CallMethod@UV@@$I?f@1@QAEXXZA@A@@@YAXAAUV@@@Z 45; CHECK: void __cdecl CallMethod<struct V, {public: void __thiscall V::f(void), 0, 0}>(struct V &) 46 47??$ReadField@UA@@$0?0@@YAHAAUA@@@Z 48; CHECK: int __cdecl ReadField<struct A, -1>(struct A &) 49 50??$ReadField@UA@@$0A@@@YAHAAUA@@@Z 51; CHECK: int __cdecl ReadField<struct A, 0>(struct A &) 52 53??$ReadField@UI@@$03@@YAHAAUI@@@Z 54; CHECK: int __cdecl ReadField<struct I, 4>(struct I &) 55 56??$ReadField@UI@@$0A@@@YAHAAUI@@@Z 57; CHECK: int __cdecl ReadField<struct I, 0>(struct I &) 58 59??$ReadField@UM@@$0A@@@YAHAAUM@@@Z 60; CHECK: int __cdecl ReadField<struct M, 0>(struct M &) 61 62??$ReadField@UM@@$0BA@@@YAHAAUM@@@Z 63; CHECK: int __cdecl ReadField<struct M, 16>(struct M &) 64 65??$ReadField@UM@@$0M@@@YAHAAUM@@@Z 66; CHECK: int __cdecl ReadField<struct M, 12>(struct M &) 67 68??$ReadField@US@@$03@@YAHAAUS@@@Z 69; CHECK: int __cdecl ReadField<struct S, 4>(struct S &) 70 71??$ReadField@US@@$07@@YAHAAUS@@@Z 72; CHECK: int __cdecl ReadField<struct S, 8>(struct S &) 73 74??$ReadField@US@@$0A@@@YAHAAUS@@@Z 75; CHECK: int __cdecl ReadField<struct S, 0>(struct S &) 76 77??$ReadField@UU@@$0A@@@YAHAAUU@@@Z 78; CHECK: int __cdecl ReadField<struct U, 0>(struct U &) 79 80??$ReadField@UU@@$G3A@A@@@YAHAAUU@@@Z 81; CHECK: int __cdecl ReadField<struct U, {4, 0, 0}>(struct U &) 82 83??$ReadField@UU@@$G7A@A@@@YAHAAUU@@@Z 84; CHECK: int __cdecl ReadField<struct U, {8, 0, 0}>(struct U &) 85 86??$ReadField@UV@@$0A@@@YAHAAUV@@@Z 87; CHECK: int __cdecl ReadField<struct V, 0>(struct V &) 88 89??$ReadField@UV@@$F7A@@@YAHAAUV@@@Z 90; CHECK: int __cdecl ReadField<struct V, {8, 0}>(struct V &) 91 92??$ReadField@UV@@$FM@A@@@YAHAAUV@@@Z 93; CHECK: int __cdecl ReadField<struct V, {12, 0}>(struct V &) 94 95?Q@@3$$QEAP8Foo@@EAAXXZEA 96; CHECK: void (__cdecl Foo::*&&Q)(void) 97