; RUN: llvm-undname < %s | FileCheck %s ; CHECK-NOT: Invalid mangled name ??$CallMethod@UC@NegativeNVOffset@@$I??_912@$BA@AEPPPPPPPM@A@@@YAXAAUC@NegativeNVOffset@@@Z ; CHECK: void __cdecl CallMethod(struct NegativeNVOffset::C &) ??$CallMethod@UM@@$0A@@@YAXAAUM@@@Z ; CHECK: void __cdecl CallMethod(struct M &) ??$CallMethod@UM@@$H??_91@$BA@AEA@@@YAXAAUM@@@Z ; CHECK: void __cdecl CallMethod(struct M &) ??$CallMethod@UM@@$H?f@1@QAEXXZA@@@YAXAAUM@@@Z ; CHECK: void __cdecl CallMethod(struct M &) ??$CallMethod@UO@@$H??_91@$BA@AE3@@YAXAAUO@@@Z ; CHECK: void __cdecl CallMethod(struct O &) ??$CallMethod@US@@$0A@@@YAXAAUS@@@Z ; CHECK: void __cdecl CallMethod(struct S &) ??$CallMethod@US@@$1??_91@$BA@AE@@YAXAAUS@@@Z ; CHECK: void __cdecl CallMethod(struct S &) ??$CallMethod@US@@$1?f@1@QAEXXZ@@YAXAAUS@@@Z ; CHECK: void __cdecl CallMethod(struct S &) ??$CallMethod@UU@@$0A@@@YAXAAUU@@@Z ; CHECK: void __cdecl CallMethod(struct U &) ??$CallMethod@UU@@$J??_91@$BA@AEA@A@A@@@YAXAAUU@@@Z ; CHECK: void __cdecl CallMethod(struct U &) ??$CallMethod@UU@@$J?f@1@QAEXXZA@A@A@@@YAXAAUU@@@Z ; CHECK: void __cdecl CallMethod(struct U &) ??$CallMethod@UV@@$0A@@@YAXAAUV@@@Z ; CHECK: void __cdecl CallMethod(struct V &) ??$CallMethod@UV@@$I??_91@$BA@AEA@A@@@YAXAAUV@@@Z ; CHECK: void __cdecl CallMethod(struct V &) ??$CallMethod@UV@@$I?f@1@QAEXXZA@A@@@YAXAAUV@@@Z ; CHECK: void __cdecl CallMethod(struct V &) ??$ReadField@UA@@$0?0@@YAHAAUA@@@Z ; CHECK: int __cdecl ReadField(struct A &) ??$ReadField@UA@@$0A@@@YAHAAUA@@@Z ; CHECK: int __cdecl ReadField(struct A &) ??$ReadField@UI@@$03@@YAHAAUI@@@Z ; CHECK: int __cdecl ReadField(struct I &) ??$ReadField@UI@@$0A@@@YAHAAUI@@@Z ; CHECK: int __cdecl ReadField(struct I &) ??$ReadField@UM@@$0A@@@YAHAAUM@@@Z ; CHECK: int __cdecl ReadField(struct M &) ??$ReadField@UM@@$0BA@@@YAHAAUM@@@Z ; CHECK: int __cdecl ReadField(struct M &) ??$ReadField@UM@@$0M@@@YAHAAUM@@@Z ; CHECK: int __cdecl ReadField(struct M &) ??$ReadField@US@@$03@@YAHAAUS@@@Z ; CHECK: int __cdecl ReadField(struct S &) ??$ReadField@US@@$07@@YAHAAUS@@@Z ; CHECK: int __cdecl ReadField(struct S &) ??$ReadField@US@@$0A@@@YAHAAUS@@@Z ; CHECK: int __cdecl ReadField(struct S &) ??$ReadField@UU@@$0A@@@YAHAAUU@@@Z ; CHECK: int __cdecl ReadField(struct U &) ??$ReadField@UU@@$G3A@A@@@YAHAAUU@@@Z ; CHECK: int __cdecl ReadField(struct U &) ??$ReadField@UU@@$G7A@A@@@YAHAAUU@@@Z ; CHECK: int __cdecl ReadField(struct U &) ??$ReadField@UV@@$0A@@@YAHAAUV@@@Z ; CHECK: int __cdecl ReadField(struct V &) ??$ReadField@UV@@$F7A@@@YAHAAUV@@@Z ; CHECK: int __cdecl ReadField(struct V &) ??$ReadField@UV@@$FM@A@@@YAHAAUV@@@Z ; CHECK: int __cdecl ReadField(struct V &) ?Q@@3$$QEAP8Foo@@EAAXXZEA ; CHECK: void (__cdecl Foo::*&&Q)(void)