1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
| ; These tests are based on clang/test/CodeGenCXX/mangle-ms-return-qualifiers.cpp
; RUN: llvm-undname < %s | FileCheck %s
; CHECK-NOT: Invalid mangled name
?a1@@YAXXZ
; CHECK: void __cdecl a1(void)
?a2@@YAHXZ
; CHECK: int __cdecl a2(void)
?a3@@YA?BHXZ
; CHECK: int const __cdecl a3(void)
?a4@@YA?CHXZ
; CHECK: int volatile __cdecl a4(void)
?a5@@YA?DHXZ
; CHECK: int const volatile __cdecl a5(void)
?a6@@YAMXZ
; CHECK: float __cdecl a6(void)
?b1@@YAPAHXZ
; CHECK: int * __cdecl b1(void)
?b2@@YAPBDXZ
; CHECK: char const * __cdecl b2(void)
?b3@@YAPAMXZ
; CHECK: float * __cdecl b3(void)
?b4@@YAPBMXZ
; CHECK: float const * __cdecl b4(void)
?b5@@YAPCMXZ
; CHECK: float volatile * __cdecl b5(void)
?b6@@YAPDMXZ
; CHECK: float const volatile * __cdecl b6(void)
?b7@@YAAAMXZ
; CHECK: float & __cdecl b7(void)
?b8@@YAABMXZ
; CHECK: float const & __cdecl b8(void)
?b9@@YAACMXZ
; CHECK: float volatile & __cdecl b9(void)
?b10@@YAADMXZ
; CHECK: float const volatile & __cdecl b10(void)
?b11@@YAPAPBDXZ
; CHECK: char const ** __cdecl b11(void)
?c1@@YA?AVA@@XZ
; CHECK: class A __cdecl c1(void)
?c2@@YA?BVA@@XZ
; CHECK: class A const __cdecl c2(void)
?c3@@YA?CVA@@XZ
; CHECK: class A volatile __cdecl c3(void)
?c4@@YA?DVA@@XZ
; CHECK: class A const volatile __cdecl c4(void)
?c5@@YAPBVA@@XZ
; CHECK: class A const * __cdecl c5(void)
?c6@@YAPCVA@@XZ
; CHECK: class A volatile * __cdecl c6(void)
?c7@@YAPDVA@@XZ
; CHECK: class A const volatile * __cdecl c7(void)
?c8@@YAAAVA@@XZ
; CHECK: class A & __cdecl c8(void)
?c9@@YAABVA@@XZ
; CHECK: class A const & __cdecl c9(void)
?c10@@YAACVA@@XZ
; CHECK: class A volatile & __cdecl c10(void)
?c11@@YAADVA@@XZ
; CHECK: class A const volatile & __cdecl c11(void)
?d1@@YA?AV?$B@H@@XZ
; CHECK: class B<int> __cdecl d1(void)
?d2@@YA?AV?$B@PBD@@XZ
; CHECK: class B<char const *> __cdecl d2(void)
?d3@@YA?AV?$B@VA@@@@XZ
; CHECK: class B<class A> __cdecl d3(void)
?d4@@YAPAV?$B@VA@@@@XZ
; CHECK: class B<class A> * __cdecl d4(void)
?d5@@YAPBV?$B@VA@@@@XZ
; CHECK: class B<class A> const * __cdecl d5(void)
?d6@@YAPCV?$B@VA@@@@XZ
; CHECK: class B<class A> volatile * __cdecl d6(void)
?d7@@YAPDV?$B@VA@@@@XZ
; CHECK: class B<class A> const volatile * __cdecl d7(void)
?d8@@YAAAV?$B@VA@@@@XZ
; CHECK: class B<class A> & __cdecl d8(void)
?d9@@YAABV?$B@VA@@@@XZ
; CHECK: class B<class A> const & __cdecl d9(void)
?d10@@YAACV?$B@VA@@@@XZ
; CHECK: class B<class A> volatile & __cdecl d10(void)
?d11@@YAADV?$B@VA@@@@XZ
; CHECK: class B<class A> const volatile & __cdecl d11(void)
?e1@@YA?AW4Enum@@XZ
; CHECK: Enum __cdecl e1(void)
?e2@@YA?BW4Enum@@XZ
; CHECK: Enum const __cdecl e2(void)
?e3@@YAPAW4Enum@@XZ
; CHECK: Enum * __cdecl e3(void)
?e4@@YAAAW4Enum@@XZ
; CHECK: Enum & __cdecl e4(void)
?f1@@YA?AUS@@XZ
; CHECK: struct S __cdecl f1(void)
?f2@@YA?BUS@@XZ
; CHECK: struct S const __cdecl f2(void)
?f3@@YAPAUS@@XZ
; CHECK: struct S * __cdecl f3(void)
?f4@@YAPBUS@@XZ
; CHECK: struct S const * __cdecl f4(void)
?f5@@YAPDUS@@XZ
; CHECK: struct S const volatile * __cdecl f5(void)
?f6@@YAAAUS@@XZ
; CHECK: struct S & __cdecl f6(void)
?f7@@YAQAUS@@XZ
; CHECK: struct S *const __cdecl f7(void)
?f8@@YAPQS@@HXZ
; CHECK: int S::* __cdecl f8(void)
?f9@@YAQQS@@HXZ
; CHECK: int S::*const __cdecl f9(void)
?f10@@YAPIQS@@HXZ
; CHECK: int S::*__restrict __cdecl f10(void)
?f11@@YAQIQS@@HXZ
; CHECK: int S::*const __restrict __cdecl f11(void)
?g1@@YAP6AHH@ZXZ
; CHECK: int (__cdecl * __cdecl g1(void))(int)
?g2@@YAQ6AHH@ZXZ
; CHECK: int (__cdecl *const __cdecl g2(void))(int)
?g3@@YAPAP6AHH@ZXZ
; CHECK: int (__cdecl ** __cdecl g3(void))(int)
?g4@@YAPBQ6AHH@ZXZ
; CHECK: int (__cdecl *const * __cdecl g4(void))(int)
?h1@@YAAIAHXZ
; CHECK: int &__restrict __cdecl h1(void)
|