1; RUN: llvm-undname < %s | FileCheck %s 2 3; CHECK-NOT: Invalid mangled name 4 5??$?BH@TemplateOps@@QAEHXZ 6; CHECK: int __thiscall TemplateOps::operator<int> int(void) 7 8??BOps@@QAEHXZ 9; CHECK: int __thiscall Ops::operator int(void) 10 11??BConstOps@@QAE?BHXZ 12; CHECK: int const __thiscall ConstOps::operator int const(void) 13 14??BVolatileOps@@QAE?CHXZ 15; CHECK: int volatile __thiscall VolatileOps::operator int volatile(void) 16 17??BConstVolatileOps@@QAE?DHXZ 18; CHECK: int const volatile __thiscall ConstVolatileOps::operator int const volatile(void) 19 20??$?BN@TemplateOps@@QAENXZ 21; CHECK: double __thiscall TemplateOps::operator<double> double(void) 22 23??BOps@@QAENXZ 24; CHECK: double __thiscall Ops::operator double(void) 25 26??BConstOps@@QAE?BNXZ 27; CHECK: double const __thiscall ConstOps::operator double const(void) 28 29??BVolatileOps@@QAE?CNXZ 30; CHECK: double volatile __thiscall VolatileOps::operator double volatile(void) 31 32??BConstVolatileOps@@QAE?DNXZ 33; CHECK: double const volatile __thiscall ConstVolatileOps::operator double const volatile(void) 34 35??BCompoundTypeOps@@QAEPAHXZ 36; CHECK: nt * __thiscall CompoundTypeOps::operator int *(void) 37 38??BCompoundTypeOps@@QAEPBHXZ 39; CHECK: int const * __thiscall CompoundTypeOps::operator int const *(void) 40 41??BCompoundTypeOps@@QAE$$QAHXZ 42; CHECK: int && __thiscall CompoundTypeOps::operator int &&(void) 43 44??BCompoundTypeOps@@QAE?AU?$Foo@H@@XZ 45; CHECK: struct Foo<int> __thiscall CompoundTypeOps::operator struct Foo<int>(void) 46 47??$?BH@CompoundTypeOps@@QAE?AU?$Bar@U?$Foo@H@@@@XZ 48; CHECK: struct Bar<struct Foo<int>> __thiscall CompoundTypeOps::operator<int> struct Bar<struct Foo<int>>(void) 49 50??$?BPAH@TemplateOps@@QAEPAHXZ 51; CHECK: int * __thiscall TemplateOps::operator<int *> int *(void) 52