; RUN: llvm-undname < %s | FileCheck %s
; CHECK-NOT: Invalid mangled name
?nochange@@YAXXZ
; CHECK: void __cdecl nochange(void)
?a@@YAXP6AHXZ@Z
; CHECK: void __cdecl a(int (__cdecl *)(void))
?a@@YAXP6AHX_E@Z
; CHECK: void __cdecl a(int (__cdecl *)(void) noexcept)
?b@@YAXP6AHXZ@Z
; CHECK: void __cdecl b(int (__cdecl *)(void))
?c@@YAXP6AHXZ@Z
; CHECK: void __cdecl c(int (__cdecl *)(void))
?c@@YAXP6AHX_E@Z
; CHECK: void __cdecl c(int (__cdecl *)(void) noexcept)
?ee@?$e@$$A6AXXZ@@EEAAXXZ
; CHECK: private: virtual void __cdecl e<void __cdecl(void)>::ee(void)
?ee@?$e@$$A6AXX_E@@EEAAXXZ
; CHECK: private: virtual void __cdecl e<void __cdecl(void) noexcept>::ee(void)