[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / DebugInfo / PDB / Inputs / merge-ids-and-types-2.yaml
blob1bd54deebffd2dac730790bbb495d903d97e0aea
1 # In file 1 we set up some basic types and IDs to refer to them.  In this file
2 # we will set up the same types.  For some of them we will make them identical
3 # but re-order the records in the file to make sure they have different type
4 # indices and appear in different orders.  In other cases we will make slight
5 # adjustments to the types, to ensure that they do not get merged in.
6
7 # For easy understanding, a semantic representation of the types we will set up
8 # is as follows:
9 #  - int main(int, char**)    // This record should share an LF_PROCEDURE and id
10 #                             // record with corresponding function from the
11 #                             // first file.
12 #  - int main2(int, char**)   // This record should share the LF_PROCEDURE
13 #                             // record but have a unique id record.
14 #  - void foo(int, char**)    // This record should have a unique LF_PROCEDURE
15 #                             // record, but the LF_ARGLIST record internally
16 #                             // should be shared.
18 #  - struct FooBar {          // Because the type of this record exactly matches
19 #                             // the corresponding file, its entire type record
20 #                             // hierarchy should be shared.
21 #    public:
22 #      void *FooMember;
23 #      void FooMethod2(int);  // Note that the *type* of this member should be
24 #                             // the same as the type of the record from the
25 #                             // first stream.  But since it has a different
26 #                             // name, it will not share an id record.
27 #    };
28 TpiStream:
29   Records:
30     # TypeIndex: 4096 (0x1000)
31     # (int)
32     - Kind:            LF_ARGLIST
33       ArgList:         
34         ArgIndices:      [ 116 ]
35     # TypeIndex: 4097 (0x1001)
36     # public void *FooMember
37     - Kind:            LF_FIELDLIST
38       FieldList:       
39         - Kind:            LF_MEMBER
40           DataMember:      
41             Attrs:           3           # public
42             Type:            1027        # void*
43             FieldOffset:     0
44             Name:            FooMember   # FooMember
45     # TypeIndex: 4098 (0x1002)
46     # char**
47     - Kind:            LF_POINTER
48       Pointer:         
49         ReferentType:    1136
50         Attrs:           32778
51     # TypeIndex: 4099 (0x1003)
52     # (int, char**)
53     - Kind:            LF_ARGLIST
54       ArgList:         
55         ArgIndices:      [ 116, 4098 ]
56     # TypeIndex: 4100 (0x1004)
57     # struct FooBar {
58     # public:
59     #   void *FooMember;
60     # };
61     - Kind:            LF_STRUCTURE
62       Class:           
63         MemberCount:     1
64         Options:         [ None, HasUniqueName ]
65         FieldList:       4097
66         Name:            FooBar
67         UniqueName:      'FooBar'
68         DerivationList:  0
69         VTableShape:     0
70         Size:            4
71     # TypeIndex: 4101 (0x1005)
72     # void (int, char**)
73     - Kind:            LF_PROCEDURE
74       Procedure:       
75         ReturnType:      3           # void
76         CallConv:        NearC
77         Options:         [ None ]
78         ParameterCount:  2
79         ArgumentList:    4099        # (int, char**)
80     # TypeIndex: 4102 (0x1006)
81     # FooBar *
82     - Kind:            LF_POINTER
83       Pointer:         
84         ReferentType:    4100       # FooBar
85         Attrs:           32778
86     # TypeIndex: 4103 (0x1007)
87     # int (int, char**)
88     - Kind:            LF_PROCEDURE
89       Procedure:       
90         ReturnType:      116         # int
91         CallConv:        NearC
92         Options:         [ None ]
93         ParameterCount:  2
94         ArgumentList:    4099        # (int, char**)
95     # TypeIndex: 4104 (0x1008)
96     - Kind:            LF_MFUNCTION
97       MemberFunction:  
98         ReturnType:      3                      # void
99         ClassType:       4100                   # struct FooBar
100         ThisType:        4102                   # FooBar *
101         CallConv:        ThisCall
102         Options:         [ None, Constructor ]
103         ParameterCount:  1
104         ArgumentList:    4096                   # (int)
105         ThisPointerAdjustment: 0
106 IpiStream:
107   Records:
108     # TypeIndex: 4096 (0x1000)
109     # struct FooBar
110     - Kind:            LF_UDT_MOD_SRC_LINE
111       UdtModSourceLine: 
112         UDT:             4100       # struct FooBar
113         SourceFile:      0          # We don't support this yet
114         LineNumber:      0
115         Module:          0          # We don't support this yet
116     # TypeIndex: 4097 (0x1001)
117     # int main2(int, char **)
118     - Kind:            LF_FUNC_ID
119       FuncId:          
120         ParentScope:     0
121         FunctionType:    4103       # int main2(int, char**)
122         Name:            main2
123     # TypeIndex: 4098 (0x1002)
124     # void foo(int, char **)
125     - Kind:            LF_FUNC_ID
126       FuncId:          
127         ParentScope:     0
128         FunctionType:    4101       # void main2(int, char**)
129         Name:            foo
130     # TypeIndex: 4099 (0x1003)
131     # void FooBar::FooMethod2(int)
132     - Kind:            LF_MFUNC_ID
133       MemberFuncId:    
134         ClassType:       4100       # struct FooBar
135         FunctionType:    4104       # void FooBar::FooMethod2(int)
136         Name:            FooMethod2
137     # TypeIndex: 4100 (0x1004)
138     # int main(int, char **)
139     - Kind:            LF_FUNC_ID
140       FuncId:          
141         ParentScope:     0
142         FunctionType:    4103       # int main(int, char**)
143         Name:            main