1 ; RUN: llvm-undname < %s | FileCheck %s
3 ; CHECK-NOT: Invalid mangled name
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 &)
8 ??$CallMethod@UM@@$0A@@@YAXAAUM@@@Z
9 ; CHECK: void __cdecl CallMethod<struct M, 0>(struct M &)
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 &)
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 &)
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 &)
20 ??$CallMethod@US@@$0A@@@YAXAAUS@@@Z
21 ; CHECK: void __cdecl CallMethod<struct S, 0>(struct S &)
23 ??$CallMethod@US@@$1??_91@$BA@AE@@YAXAAUS@@@Z
24 ; CHECK: void __cdecl CallMethod<struct S, &[thunk]: __thiscall S::`vcall'{0, {flat}}>(struct S &)
26 ??$CallMethod@US@@$1?f@1@QAEXXZ@@YAXAAUS@@@Z
27 ; CHECK: void __cdecl CallMethod<struct S, &public: void __thiscall S::f(void)>(struct S &)
29 ??$CallMethod@UU@@$0A@@@YAXAAUU@@@Z
30 ; CHECK: void __cdecl CallMethod<struct U, 0>(struct U &)
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 &)
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 &)
38 ??$CallMethod@UV@@$0A@@@YAXAAUV@@@Z
39 ; CHECK: void __cdecl CallMethod<struct V, 0>(struct V &)
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 &)
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 &)
47 ??$ReadField@UA@@$0?0@@YAHAAUA@@@Z
48 ; CHECK: int __cdecl ReadField<struct A, -1>(struct A &)
50 ??$ReadField@UA@@$0A@@@YAHAAUA@@@Z
51 ; CHECK: int __cdecl ReadField<struct A, 0>(struct A &)
53 ??$ReadField@UI@@$03@@YAHAAUI@@@Z
54 ; CHECK: int __cdecl ReadField<struct I, 4>(struct I &)
56 ??$ReadField@UI@@$0A@@@YAHAAUI@@@Z
57 ; CHECK: int __cdecl ReadField<struct I, 0>(struct I &)
59 ??$ReadField@UM@@$0A@@@YAHAAUM@@@Z
60 ; CHECK: int __cdecl ReadField<struct M, 0>(struct M &)
62 ??$ReadField@UM@@$0BA@@@YAHAAUM@@@Z
63 ; CHECK: int __cdecl ReadField<struct M, 16>(struct M &)
65 ??$ReadField@UM@@$0M@@@YAHAAUM@@@Z
66 ; CHECK: int __cdecl ReadField<struct M, 12>(struct M &)
68 ??$ReadField@US@@$03@@YAHAAUS@@@Z
69 ; CHECK: int __cdecl ReadField<struct S, 4>(struct S &)
71 ??$ReadField@US@@$07@@YAHAAUS@@@Z
72 ; CHECK: int __cdecl ReadField<struct S, 8>(struct S &)
74 ??$ReadField@US@@$0A@@@YAHAAUS@@@Z
75 ; CHECK: int __cdecl ReadField<struct S, 0>(struct S &)
77 ??$ReadField@UU@@$0A@@@YAHAAUU@@@Z
78 ; CHECK: int __cdecl ReadField<struct U, 0>(struct U &)
80 ??$ReadField@UU@@$G3A@A@@@YAHAAUU@@@Z
81 ; CHECK: int __cdecl ReadField<struct U, {4, 0, 0}>(struct U &)
83 ??$ReadField@UU@@$G7A@A@@@YAHAAUU@@@Z
84 ; CHECK: int __cdecl ReadField<struct U, {8, 0, 0}>(struct U &)
86 ??$ReadField@UV@@$0A@@@YAHAAUV@@@Z
87 ; CHECK: int __cdecl ReadField<struct V, 0>(struct V &)
89 ??$ReadField@UV@@$F7A@@@YAHAAUV@@@Z
90 ; CHECK: int __cdecl ReadField<struct V, {8, 0}>(struct V &)
92 ??$ReadField@UV@@$FM@A@@@YAHAAUV@@@Z
93 ; CHECK: int __cdecl ReadField<struct V, {12, 0}>(struct V &)
95 ?Q@@3$$QEAP8Foo@@EAAXXZEA
96 ; CHECK: void (__cdecl Foo::*&&Q)(void)