1; RUN: llvm-undname < %s | FileCheck %s
2
3; CHECK-NOT: Invalid mangled name
4
5?f1@@YAXPBD0@Z
6; CHECK: void __cdecl f1(char const *, char const *)
7
8?f2@@YAXPBDPAD@Z
9; CHECK: void __cdecl f2(char const *, char *)
10
11?f3@@YAXHPBD0@Z
12; CHECK: void __cdecl f3(int, char const *, char const *)
13
14?f4@@YAPBDPBD0@Z
15; CHECK: char const * __cdecl f4(char const *, char const *)
16
17?f5@@YAXPBDIDPBX0I@Z
18; CHECK: void __cdecl f5(char const *, unsigned int, char, void const *, char const *, unsigned int)
19
20?f6@@YAX_N0@Z
21; CHECK: void __cdecl f6(bool, bool)
22
23?f7@@YAXHPAHH0_N1PA_N@Z
24; CHECK: void __cdecl f7(int, int *, int, int *, bool, bool, bool *)
25
26; FIXME: tests for more than 10 types?
27
28?g1@@YAXUS@@@Z
29; CHECK: void __cdecl g1(struct S)
30
31?g2@@YAXUS@@0@Z
32; CHECK: void __cdecl g2(struct S, struct S)
33
34?g3@@YAXUS@@0PAU1@1@Z
35; CHECK: void __cdecl g3(struct S, struct S, struct S *, struct S *)
36
37?g4@@YAXPBDPAUS@@01@Z
38; CHECK: void __cdecl g4(char const *, struct S *, char const *, struct S *)
39
40?mbb@S@@QAEX_N0@Z
41; CHECK: void __thiscall S::mbb(bool, bool)
42
43?h1@@YAXPBD0P6AXXZ1@Z
44; CHECK: void __cdecl h1(char const *, char const *, void (__cdecl *)(void), void (__cdecl *)(void))
45
46?h2@@YAXP6AXPAX@Z0@Z
47; CHECK: void __cdecl h2(void (__cdecl *)(void *), void *)
48
49?h3@@YAP6APAHPAH0@ZP6APAH00@Z10@Z
50; CHECK: int * (__cdecl * __cdecl h3(int * (__cdecl *)(int *, int *), int * (__cdecl *)(int *, int *), int *))(int *, int *)
51
52?foo@0@YAXXZ
53; CHECK: void __cdecl foo::foo(void)
54