[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / DebugInfo / PDB / Inputs / every-type.yaml
blob191c49042be6b9430c702313c3bd8d1c33539708
1 ---
2 TpiStream:
3   Records:
4     # int*                                                                                              [Index: 0x1000]
5     - Kind:            LF_POINTER
6       Pointer:
7         ReferentType:    116            # int
8         Attrs:           32778
9   # const int*                                      [Index: 0x1001]
10   - Kind:            LF_MODIFIER
11     Modifier:
12       ModifiedType:  0x1000
13       Modifiers:     [ Const ]
14   # char*                                           [Index: 0x1002]
15   - Kind:            LF_POINTER
16     Pointer:
17       ReferentType:    1136           # char*
18       Attrs:           32778
19   # (int, char **)                                  [Index: 0x1003]
20   - Kind:            LF_ARGLIST
21     ArgList:
22       ArgIndicies:  [ 116, 0x1002 ]
23   # (int, double)                                   [Index: 0x1004]
24   - Kind:            LF_ARGLIST
25     ArgList:
26       ArgIndicies:  [ 116, 65 ]       # (int, double)
27   # int main(int argc, char **argv)                 [Index: 0x1005]
28   - Kind:            LF_PROCEDURE
29     Procedure:
30       ReturnType:      117            # int
31       CallConv:        NearC          # __cdecl
32       Options:         [ None ]
33       ParameterCount:  2
34       ArgumentList:    0x1003         # (int, char**)
35   #     <label>                                         [Index: 0x1006]
36   - Kind:            LF_LABEL
37     Label:
38       Mode:          Near
39   # <forward decl>
40   # class FooClass;                                 [Index: 0x1007]
41   - Kind:            LF_STRUCTURE
42     Class:
43       MemberCount:     0
44       Options:         [ None, ForwardReference ]
45       FieldList:       0
46       Name:            'FooClass'
47       DerivationList:  0
48       VTableShape:     0
49       Size:            0
50   # char*                                           [Index: 0x1008]
51   - Kind:            LF_POINTER
52     Pointer:
53       ReferentType:    0x1007         # FooClass
54       Attrs:           33802          # const
55   # int (FooClass::)(int, char **)                  [Index: 0x1009]
56   - Kind:            LF_MFUNCTION
57     MemberFunction:
58       ReturnType:      116            # int
59       ClassType:       0x1007         # FooClass
60       ThisType:        0x1008         # const FooClass*
61       CallConv:        ThisCall
62       Options:         [ None ]
63       ParameterCount:  2
64       ArgumentList:    0x1003         # (int, char**)
65       ThisPointerAdjustment: 0
66   # int (FooClass::)(int, double)                   [Index: 0x100A]
67   - Kind:            LF_MFUNCTION
68     MemberFunction:
69       ReturnType:      116            # int
70       ClassType:       0x1007         # FooClass
71       ThisType:        0x1008         # const FooClass*
72       CallConv:        ThisCall
73       Options:         [ None ]
74       ParameterCount:  2
75       ArgumentList:    0x1004         # (int, double)
76       ThisPointerAdjustment: 0
77   # <method overload list>
78   # int (FooClass::)(int, char **)
79   # int (FooClass::)(int, double)                   [Index: 0x100B]
80   - Kind:            LF_METHODLIST
81     MethodOverloadList:
82       Methods:
83         - Type:            0x1009        # int (FooClass::)(int, char **)
84           Attrs:           3             # public
85           VFTableOffset:   -1
86           Name:            ''
87         - Type:            0x100A        # int (FooClass::)(int, double)
88           Attrs:           3             # public
89           VFTableOffset:   -1
90           Name:            ''
91   # <Field List>
92   #   A, B, C                                       [Index: 0x100C]
93   - Kind:            LF_FIELDLIST
94     FieldList:
95       - Kind:            LF_ENUMERATE
96         Enumerator:
97           Attrs:           3
98           Value:           0
99           Name:            A
100       - Kind:            LF_ENUMERATE
101         Enumerator:
102           Attrs:           3
103           Value:           1
104           Name:            B
105       - Kind:            LF_ENUMERATE
106         Enumerator:
107           Attrs:           3
108           Value:           2
109           Name:            C
110   # enum FooClass::Enum : uint32_t {
111   #   A, B, C
112   # };                                              [Index: 0x100D]
113   - Kind:            LF_ENUM
114     Enum:
115       NumEnumerators:  3
116       Options:         [ None, Nested ]
117       FieldList:       0x100C
118       Name:            'FooClass::Enum'
119       UnderlyingType:  117
120   # <Field List>
121   # public:
122   #   enum FooEnum : uint32_t {
123   #     A, B, C
124   #   };
125   #   FooEnum EnumMember;
126   #   static int StaticInt;
127   #   int FooClass::OverloadedMethod(int, char **);
128   #   int FooClass::OverloadedMethod(int, double);
129   #   int FooClass::RegularMethod(int, double);
130   #                                                 [Index: 0x100E]
131   - Kind:            LF_FIELDLIST
132     FieldList:
133       # enum FooEnum : uint32_t {
134       #   A, B, C
135       # };
136       - Kind:            LF_NESTTYPE
137         NestedType:
138           Type:            0x100D
139           Name:            FooEnum
140       # FooEnum EnumMember;
141       - Kind:            LF_MEMBER
142         DataMember:
143           Attrs:           3           # public
144           Type:            0x100D      # void*
145           FieldOffset:     0
146           Name:            EnumMember
147       # static int StaticInt;
148       - Kind:            LF_STMEMBER
149         StaticDataMember:
150           Attrs:           3           # public
151           Type:            116         # int
152           Name:            StaticInt
153       # int FooClass::OverloadedMethod(int, char **);
154       # int FooClass::OverloadedMethod(int, double);
155       - Kind:            LF_METHOD
156         OverloadedMethod:
157           NumOverloads:    2
158           MethodList:      0x100B
159           Name:            OverloadedMethod
160       # int FooClass::RegularMethod(int, double);
161       - Kind:            LF_ONEMETHOD
162         OneMethod:
163           Type:            0x100A
164           Attrs:           3          # public
165           VFTableOffset:   -1
166           Name:            RegularMethod
167   # class FooClass {
168   # public:
169   #   enum FooEnum : uint32_t {
170   #     A, B, C
171   #   };
172   #   FooEnum EnumMember;
173   #   static int StaticInt;
174   #   int FooClass::OverloadedMethod(int, char **);
175   #   int FooClass::OverloadedMethod(int, double);
176   #   int FooClass::RegularMethod(int, double);
177   # };                                              [Index: 0x100F]
178   - Kind:            LF_CLASS
179     Class:
180       MemberCount:     6
181       Options:         [ None ]
182       FieldList:       0x100E
183       Name:            'FooClass'
184       DerivationList:  0
185       VTableShape:     0
186       Size:            4
187   # struct FooStructure;                            [Index: 0x1010]
188   - Kind:            LF_STRUCTURE
189     Class:
190       MemberCount:     6
191       Options:         [ None ]
192       FieldList:       0x100E
193       Name:            'FooStructure'
194       DerivationList:  0
195       VTableShape:     0
196       Size:            4
197   # interface FooInterface;                         [Index: 0x1011]
198   - Kind:            LF_INTERFACE
199     Class:
200       MemberCount:     6
201       Options:         [ None ]
202       FieldList:       0x100E
203       Name:            'FooInterface'
204       DerivationList:  0
205       VTableShape:     0
206       Size:            4
207   # <field list>
208   # : public FooClass                               [Index: 0x1012]
209   - Kind:            LF_FIELDLIST
210     FieldList:
211       - Kind:            LF_BCLASS
212         Attrs:           3           # public
213         Type:            0x100F      # FooClass
214         Offset:          0
215   # <field list>
216   # : public virtual FooClass                       [Index: 0x1013]
217   - Kind:            LF_FIELDLIST
218     FieldList:
219       - Kind:            LF_VBCLASS
220         Attrs:           3           # public
221         BaseType:        0x100F      # FooClass
222         VBPtrType:       0x1001      # const int *
223         VBPtrOffset:     0
224         VTableIndex:     1
225   # struct Inherit : public FooClass {};             [Index: 0x1014]
226   - Kind:            LF_STRUCTURE
227     Class:
228       MemberCount:     1
229       Options:         [ None ]
230       FieldList:       0x100E
231       Name:            'Inherit'
232       DerivationList:  0x1012
233       VTableShape:     0
234       Size:            4
235   # class VInherit : public virtual FooClass {};             [Index: 0x1015]
236   - Kind:            LF_STRUCTURE
237     Class:
238       MemberCount:     1
239       Options:         [ None ]
240       FieldList:       0x100E
241       Name:            'Inherit'
242       DerivationList:  0x1012
243       VTableShape:     0
244       Size:            4
245   # const volatile enum FooClass::Enum : uint32_t {          [Index: 0x1016]
246   - Kind:            LF_MODIFIER
247     Modifier:
248       ModifiedType:  0x100D
249       Modifiers:     [ Const, Volatile ]
250   # const volatile struct Inherit : public FooClass {} {     [Index: 0x1017]
251   - Kind:            LF_MODIFIER
252     Modifier:
253       ModifiedType:  0x1014
254       Modifiers:     [ Const, Volatile ]
255   # const volatile class FooClass {                          [Index: 0x1018]
256   - Kind:            LF_MODIFIER
257     Modifier:
258       ModifiedType:  0x100F
259       Modifiers:     [ Const, Volatile ]
260   # const volatile interface FooInterface {                  [Index: 0x1019]
261   - Kind:            LF_MODIFIER
262     Modifier:
263       ModifiedType:  0x1011
264       Modifiers:     [ Const, Volatile ]
266 # // Member type records. These are generally not length prefixed, and appear
267 # // inside of a field list record.
268 # MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)
270 # MEMBER_RECORD_ALIAS(LF_BINTERFACE, 0x151a, BaseInterface, BaseClass)
272 # MEMBER_RECORD_ALIAS(LF_IVBCLASS, 0x1402, IndirectVirtualBaseClass,
273 #                     VirtualBaseClass)
276 # TYPE_RECORD(LF_ARRAY, 0x1503, Array)
277 # TYPE_RECORD(LF_UNION, 0x1506, Union)
278 # TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)
279 # TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)
280 # TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)
282 # TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)
285 # // ID leaf records. Subsequent leaf types may be referenced from .debug$S.
286 # TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)
287 # TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)
288 # TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)
289 # TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)
290 # TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)
291 # TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)
292 # TYPE_RECORD(LF_UDT_MOD_SRC_LINE, 0x1607, UdtModSourceLine)