; These tests are based on clang/test/CodeGenCXX/mangle-ms.cpp
; RUN: llvm-undname < %s | FileCheck %s

; CHECK-NOT: Invalid mangled name

?a@@3HA
; CHECK: int a

?b@N@@3HA
; CHECK: int N::b

?anonymous@?A@N@@3HA
; CHECK: int N::`anonymous namespace'::anonymous

; FIXME: Reference Temporaries
; ?$RT1@NeedsReferenceTemporary@@3ABHB
; ?$RT1@NeedsReferenceTemporary@@3AEBHEB

?_c@@YAHXZ
; CHECK: int __cdecl _c(void)

?d@foo@@0FB
; CHECK: static short const foo::d

?e@foo@@1JC
; CHECK: static long volatile foo::e

?f@foo@@2DD
; CHECK: static char const volatile foo::f

??0foo@@QAE@XZ
; CHECK: __thiscall foo::foo(void)

??0foo@@QEAA@XZ
; CHECK: __cdecl foo::foo(void)

??1foo@@QAE@XZ
; CHECK: __thiscall foo::~foo(void)

??1foo@@QEAA@XZ
; CHECK: __cdecl foo::~foo(void)

??0foo@@QAE@H@Z
; CHECK: __thiscall foo::foo(int)

??0foo@@QEAA@H@Z
; CHECK: __cdecl foo::foo(int)

??0foo@@QAE@PAD@Z
; CHECK: __thiscall foo::foo(char *)

??0foo@@QEAA@PEAD@Z
; CHECK: __cdecl foo::foo(char *)

?bar@@YA?AVfoo@@XZ
; CHECK: class foo __cdecl bar(void)

?bar@@YA?AVfoo@@XZ
; CHECK: class foo __cdecl bar(void)

??Hfoo@@QAEHH@Z
; CHECK: int __thiscall foo::operator+(int)

??Hfoo@@QEAAHH@Z
; CHECK: int __cdecl foo::operator+(int)

?static_method@foo@@SAPAV1@XZ
; CHECK: static class foo * __cdecl foo::static_method(void)

?static_method@foo@@SAPEAV1@XZ
; CHECK: static class foo * __cdecl foo::static_method(void)

?g@bar@@2HA
; CHECK: static int bar::g

; undname returns `int *h1`, but it is a bug in their demangler.  Their mangler
; correctly mangles `int *h1` as ?h1@3PAHA and `int * const h1` as ?h1@3QAHA
?h1@@3QAHA
; CHECK: int *const h1

?h2@@3QBHB
; CHECK: int const *const h2

?h3@@3QIAHIA
; CHECK: int *const __restrict h3

?h3@@3QEIAHEIA
; CHECK: int *const __restrict h3

?i@@3PAY0BE@HA
; CHECK: int (*i)[20]

?FunArr@@3PAY0BE@P6AHHH@ZA
; CHECK: int (__cdecl *(*FunArr)[20])(int, int)

?j@@3P6GHCE@ZA
; CHECK: int (__stdcall *j)(signed char, unsigned char)

?funptr@@YAP6AHXZXZ
; CHECK: int (__cdecl * __cdecl funptr(void))(void)

?k@@3PTfoo@@DT1@
; CHECK: char const volatile foo::*k

?k@@3PETfoo@@DET1@
; CHECK: char const volatile foo::*k

?l@@3P8foo@@AEHH@ZQ1@
; CHECK: int (__thiscall foo::*l)(int)

?g_cInt@@3HB
; CHECK: int const g_cInt

?g_vInt@@3HC
; CHECK: int volatile g_vInt

?g_cvInt@@3HD
; CHECK: int const volatile g_cvInt

?beta@@YI_N_J_W@Z
; CHECK: bool __fastcall beta(__int64, wchar_t)

?beta@@YA_N_J_W@Z
; CHECK: bool __cdecl beta(__int64, wchar_t)

?alpha@@YGXMN@Z
; CHECK: void __stdcall alpha(float, double)

?alpha@@YAXMN@Z
; CHECK: void __cdecl alpha(float, double)

?gamma@@YAXVfoo@@Ubar@@Tbaz@@W4quux@@@Z
; CHECK: void __cdecl gamma(class foo, struct bar, union baz, enum quux)

?gamma@@YAXVfoo@@Ubar@@Tbaz@@W4quux@@@Z
; CHECK: void __cdecl gamma(class foo, struct bar, union baz, enum quux)

?delta@@YAXQAHABJ@Z
; CHECK: void __cdecl delta(int *const, long const &)

?delta@@YAXQEAHAEBJ@Z
; CHECK: void __cdecl delta(int *const, long const &)

?epsilon@@YAXQAY19BE@H@Z
; CHECK: void __cdecl epsilon(int (*const)[10][20])

?epsilon@@YAXQEAY19BE@H@Z
; CHECK: void __cdecl epsilon(int (*const)[10][20])

?zeta@@YAXP6AHHH@Z@Z
; CHECK: void __cdecl zeta(int (__cdecl *)(int, int))

?zeta@@YAXP6AHHH@Z@Z
; CHECK: void __cdecl zeta(int (__cdecl *)(int, int))

; FIXME: We don't support blocks yet.

; ?eta@@YAXP_EAHHH@Z@Z
; FIXME: void eta(int (^)(int, int))
; ?theta@@YAXP_EAHHH@Z@Z
; FIXME: void theta(int(int,int)^ block)

??2@YAPAXI@Z
; CHECK: void * __cdecl operator new(unsigned int)

??3@YAXPAX@Z
; CHECK: void __cdecl operator delete(void *)

??_U@YAPAXI@Z
; CHECK: void * __cdecl operator new[](unsigned int)

??_V@YAXPAX@Z
; CHECK: void __cdecl operator delete[](void *)

?color1@@3PANA
; CHECK: double *color1

?color2@@3QBNB
; CHECK: double const *const color2

; FIXME-EXTRACONST: These tests fails because we print an extra const inside the parens.
; ?color3@@3QAY02$$CBNA
; FIXME-EXTRACONST: double const (*color3)[3]

; ?color4@@3QAY02$$CBNA
; FIXME-EXTRACONST: double const (*color4)[3]

?memptr1@@3RESB@@HES1@
; CHECK: int volatile B::*volatile memptr1

?memptr2@@3PESB@@HES1@
; CHECK: int volatile B::*memptr2

?memptr3@@3REQB@@HEQ1@
; CHECK: int B::*volatile memptr3

?funmemptr1@@3RESB@@R6AHXZES1@
; CHECK: int (__cdecl *volatile B::*volatile funmemptr1)(void)

?funmemptr2@@3PESB@@R6AHXZES1@
; CHECK: int (__cdecl *volatile B::*funmemptr2)(void)

?funmemptr3@@3REQB@@P6AHXZEQ1@
; CHECK: int (__cdecl *B::*volatile funmemptr3)(void)

?memptrtofun1@@3R8B@@EAAXXZEQ1@
; CHECK: void (__cdecl B::*volatile memptrtofun1)(void)

?memptrtofun2@@3P8B@@EAAXXZEQ1@
; CHECK: void (__cdecl B::*memptrtofun2)(void)

?memptrtofun3@@3P8B@@EAAXXZEQ1@
; CHECK: void (__cdecl B::*memptrtofun3)(void)

?memptrtofun4@@3R8B@@EAAHXZEQ1@
; CHECK: int (__cdecl B::*volatile memptrtofun4)(void)

?memptrtofun5@@3P8B@@EAA?CHXZEQ1@
; CHECK: int volatile (__cdecl B::*memptrtofun5)(void)

?memptrtofun6@@3P8B@@EAA?BHXZEQ1@
; CHECK: int const (__cdecl B::*memptrtofun6)(void)

?memptrtofun7@@3R8B@@EAAP6AHXZXZEQ1@
; CHECK: int (__cdecl * (__cdecl B::*volatile memptrtofun7)(void))(void)

?memptrtofun8@@3P8B@@EAAR6AHXZXZEQ1@
; CHECK: int (__cdecl *volatile (__cdecl B::*memptrtofun8)(void))(void)

?memptrtofun9@@3P8B@@EAAQ6AHXZXZEQ1@
; CHECK: int (__cdecl *const (__cdecl B::*memptrtofun9)(void))(void)


?fooE@@YA?AW4E@@XZ
; CHECK: enum E __cdecl fooE(void)

?fooE@@YA?AW4E@@XZ
; CHECK: enum E __cdecl fooE(void)

?fooX@@YA?AVX@@XZ
; CHECK: class X __cdecl fooX(void)

?fooX@@YA?AVX@@XZ
; CHECK: class X __cdecl fooX(void)

?s0@PR13182@@3PADA
; CHECK: char *PR13182::s0

?s1@PR13182@@3PADA
; CHECK: char *PR13182::s1

?s2@PR13182@@3QBDB
; CHECK: char const *const PR13182::s2

?s3@PR13182@@3QBDB
; CHECK: char const *const PR13182::s3

?s4@PR13182@@3RCDC
; CHECK: char volatile *volatile PR13182::s4

?s5@PR13182@@3SDDD
; CHECK: char const volatile *const volatile PR13182::s5

; undname adds an extra const in here, but it seems like their bug.
?s6@PR13182@@3PBQBDB
; CHECK: char const *const *PR13182::s6

; FIXME: We don't properly support extern "C" functions yet.
; ?local@?1??extern_c_func@@9@4HA
; FIXME: int `extern_c_func'::`2'::local

; ?local@?1??extern_c_func@@9@4HA
; FIXME: int `extern_c_func'::`2'::local

?v@?1??f@@YAHXZ@4U<unnamed-type-v>@?1??1@YAHXZ@A
; CHECK: struct `int __cdecl f(void)'::`2'::<unnamed-type-v> `int __cdecl f(void)'::`2'::v

?v@?1???$f@H@@YAHXZ@4U<unnamed-type-v>@?1???$f@H@@YAHXZ@A
; CHECK: struct `int __cdecl f<int>(void)'::`2'::<unnamed-type-v> `int __cdecl f<int>(void)'::`2'::v

??2OverloadedNewDelete@@SAPAXI@Z
; CHECK: static void * __cdecl OverloadedNewDelete::operator new(unsigned int)


??_UOverloadedNewDelete@@SAPAXI@Z
; CHECK: static void * __cdecl OverloadedNewDelete::operator new[](unsigned int)

??3OverloadedNewDelete@@SAXPAX@Z
; CHECK: static void __cdecl OverloadedNewDelete::operator delete(void *)


??_VOverloadedNewDelete@@SAXPAX@Z
; CHECK: static void __cdecl OverloadedNewDelete::operator delete[](void *)

??HOverloadedNewDelete@@QAEHH@Z
; CHECK: int __thiscall OverloadedNewDelete::operator+(int)

??2OverloadedNewDelete@@SAPEAX_K@Z
; CHECK: static void * __cdecl OverloadedNewDelete::operator new(unsigned __int64)

??_UOverloadedNewDelete@@SAPEAX_K@Z
; CHECK: static void * __cdecl OverloadedNewDelete::operator new[](unsigned __int64)

??3OverloadedNewDelete@@SAXPEAX@Z
; CHECK: static void __cdecl OverloadedNewDelete::operator delete(void *)


??_VOverloadedNewDelete@@SAXPEAX@Z
; CHECK: static void __cdecl OverloadedNewDelete::operator delete[](void *)

??HOverloadedNewDelete@@QEAAHH@Z
; CHECK: int __cdecl OverloadedNewDelete::operator+(int)


??2TypedefNewDelete@@SAPAXI@Z
; CHECK: static void * __cdecl TypedefNewDelete::operator new(unsigned int)


??_UTypedefNewDelete@@SAPAXI@Z
; CHECK: static void * __cdecl TypedefNewDelete::operator new[](unsigned int)

??3TypedefNewDelete@@SAXPAX@Z
; CHECK: static void __cdecl TypedefNewDelete::operator delete(void *)

??_VTypedefNewDelete@@SAXPAX@Z
; CHECK: static void __cdecl TypedefNewDelete::operator delete[](void *)

?vector_func@@YQXXZ
; CHECK: void __vectorcall vector_func(void)

; FIXME: We don't support extern C funcs currently.
; ??$fn_tmpl@$1?extern_c_func@@YAXXZ@@YAXXZ
; FIXME: void __cdecl fn_tmpl<&void __cdecl extern_c_func(void)>(void)

; ?overloaded_fn@@$$J0YAXXZ
; FIXME-EXTERNC: extern \"C\" void __cdecl overloaded_fn(void)

?f@UnnamedType@@YAXQAPAU<unnamed-type-T1>@S@1@@Z
; CHECK: void __cdecl UnnamedType::f(struct UnnamedType::S::<unnamed-type-T1> **const)

?f@UnnamedType@@YAXUT2@S@1@@Z
; CHECK: void __cdecl UnnamedType::f(struct UnnamedType::S::T2)

?f@UnnamedType@@YAXPAUT4@S@1@@Z
; CHECK: void __cdecl UnnamedType::f(struct UnnamedType::S::T4 *)

?f@UnnamedType@@YAXUT4@S@1@@Z
; CHECK: void __cdecl UnnamedType::f(struct UnnamedType::S::T4)

?f@UnnamedType@@YAXUT5@S@1@@Z
; CHECK: void __cdecl UnnamedType::f(struct UnnamedType::S::T5)

?f@UnnamedType@@YAXUT2@S@1@@Z
; CHECK: void __cdecl UnnamedType::f(struct UnnamedType::S::T2)

?f@UnnamedType@@YAXUT4@S@1@@Z
; CHECK: void __cdecl UnnamedType::f(struct UnnamedType::S::T4)

?f@UnnamedType@@YAXUT5@S@1@@Z
; CHECK: void __cdecl UnnamedType::f(struct UnnamedType::S::T5)


; ?foo@PassObjectSize@@YAHQAHW4__pass_object_size0@__clang@@@Z
; FIXME: int foo(int *const i __attribute__((pass_object_size(0))));
; ?bar@PassObjectSize@@YAHQAHW4__pass_object_size1@__clang@@@Z
; FIXME: int bar(int *const i __attribute__((pass_object_size(1))));
; ?qux@PassObjectSize@@YAHQAHW4__pass_object_size1@__clang@@0W4__pass_object_size0@3@@Z
; FIXME: int qux(int *const i __attribute__((pass_object_size(1))), int *const j __attribute__((pass_object_size(0))));
; ?zot@PassObjectSize@@YAHQAHW4__pass_object_size1@__clang@@01@Z
; FIXME: int zot(int *const i __attribute__((pass_object_size(1))), int *const j __attribute__((pass_object_size(1))));



?f@Atomic@@YAXU?$_Atomic@H@__clang@@@Z
; CHECK: void __cdecl Atomic::f(struct __clang::_Atomic<int>)

?f@Complex@@YAXU?$_Complex@H@__clang@@@Z
; CHECK: void __cdecl Complex::f(struct __clang::_Complex<int>)

?f@Float16@@YAXU_Float16@__clang@@@Z
; CHECK: void __cdecl Float16::f(struct __clang::_Float16)


??0?$L@H@NS@@QEAA@XZ
; CHECK: __cdecl NS::L<int>::L<int>(void)

??0Bar@Foo@@QEAA@XZ
; CHECK: __cdecl Foo::Bar::Bar(void)

??0?$L@V?$H@PAH@PR26029@@@PR26029@@QAE@XZ
; CHECK: __thiscall PR26029::L<class PR26029::H<int *>>::L<class PR26029::H<int *>>(void)
