Use "isa" since the variable isn't used.
[llvm-complete.git] / test / DebugInfo / COFF / class-options-common.ll
blob46350552e0794ee8f36e3f7f4fbf6e6d66139263
1 ; RUN: llc < %s -filetype=obj | llvm-readobj - --codeview | FileCheck %s
2 ; RUN: llc < %s | llvm-mc -filetype=obj --triple=x86_64-windows | llvm-readobj - --codeview | FileCheck %s
4 ; Command to generate function-options.ll
5 ; $ clang++ class-options-common.cpp -S -emit-llvm -g -gcodeview -o class-options-common.ll
9 ; // Basically, there are two Property (class-options) expectations on each type:
10 ; // One for class forwarding reference, the other for class definition.
11
12 ; #define DEFINE_FUNCTION(T) \
13 ;   T Func_##T(T &arg) { return arg; };
14
15 ; class EmptyClass {}; // Expect: CO = ForwardReference | HasUniqueName
16 ;                      // Expect: CO = HasUniqueName
17 ; DEFINE_FUNCTION(EmptyClass);
18
19 ; class ExplicitCtorClass { // Expect CO = ForwardReference | HasUniqueName
20 ;                           // Expect CO = HasConstructorOrDestructor | HasUniqueName
21 ; public:
22 ;   explicit ExplicitCtorClass();
23 ; };
24 ; DEFINE_FUNCTION(ExplicitCtorClass);
25
26 ; class DefaultedCtorClass { // Expect: CO = ForwardReference | HasUniqueName
27 ;                            // Expect: CO = HasUniqueName
28 ; public:
29 ;   DefaultedCtorClass() = default;
30 ; };
31 ; DEFINE_FUNCTION(DefaultedCtorClass);
32
33 ; class DefaultArgumentCtorClass { // Expect: CO = ForwardReference | HasUniqueName
34 ;                                  // Expect: CO = HasConstructorOrDestructor | HasUniqueName
35 ; public:
36 ;   DefaultArgumentCtorClass(int x = 0);
37 ; };
38 ; DEFINE_FUNCTION(DefaultArgumentCtorClass);
39
40 ; class UserDtorClass { // Expect: CO = ForwardReference | HasUniqueName
41 ;                       // Expect: CO = HasConstructorOrDestructor| HasUniqueName
42 ; public:
43 ;   ~UserDtorClass() {}
44 ; };
45 ; DEFINE_FUNCTION(UserDtorClass);
46
47 ; class DefaultedDtorClass { // Expect: CO = ForwardReference | HasUniqueName
48 ;                            // Expect: CO = HasUniqueName
49 ; public:
50 ;   ~DefaultedDtorClass() = default;
51 ; };
52 ; DEFINE_FUNCTION(DefaultedDtorClass);
53
54 ; class AClass : public ExplicitCtorClass { // Expect: CO = ForwardReference | HasUniqueName
55 ;                                           // Expect: CO = HasConstructorOrDestructor | HasUniqueName
56 ; };
57 ; DEFINE_FUNCTION(AClass);
58
59 ; class BClass { static int x; }; // Expect: CO = ForwardReference | HasUniqueName
60 ;                                 // Expect: CO = HasUniqueName
61 ; DEFINE_FUNCTION(BClass);
62
63 ; struct Foo { // Expect: CO = ForwardReference | HasUniqueName
64 ;              // Expect: CO = HasUniqueName
65 ;   Foo() = default;
66 ;   Foo(const Foo &o) = default;
67 ;   int m;
68 ; } f;
69
70 ; struct Bar { // Expect: CO = ForwardReference | HasUniqueName
71 ;              // Expect: CO = HasConstructorOrDestructor | HasUniqueName
72 ;   int m = 0;
73 ; } b;
74
75 ; struct AStruct {}; // Expect: CO = ForwardReference | HasUniqueName
76 ;                    // Expect: CO = HasUniqueName
77 ; DEFINE_FUNCTION(AStruct);
78
79 ; struct BStruct { BStruct(); }; // Expect: CO = ForwardReference | HasUniqueName
80 ;                                // Expect: CO = HasConstructorOrDestructor | HasUniqueName
81 ; DEFINE_FUNCTION(BStruct);
82
83 ; void S() {
84 ;   struct ComplexStruct { // Expect: CO = ForwardReference | HasUniqueName | Scoped
85 ;                          // Expect: CO = ContainsNestedClass | HasConstructorOrDestructor | HasUniqueName | Scoped
86
87
88 ;     struct S {}; // Expect: CO = ForwardReference | HasUniqueName | Nested | Scoped
89 ;                  // Expect: CO = HasUniqueName | Nested | Scoped
90
91 ;     S s;
92 ;   };
93 ;   ComplexStruct s;
94 ; }
95
96 ; union AUnion {}; // Expect: CO = ForwardReference | HasUniqueName
97 ;                  // Expect: CO = HasUniqueName | Sealed
98 ; DEFINE_FUNCTION(AUnion);
100 ; union BUnion { BUnion() = default; }; // Expect: CO = ForwardReference | HasUniqueName
101 ;                                       // Expect: CO = HasUniqueName | Sealed
102 ; DEFINE_FUNCTION(BUnion);
104 ; void U() {
105 ;   union ComplexUnion { // Note clang not yiled 'HasUniqueName' for this type, but MSVC does.
106 ;                        // Expect: CO = ForwardReference | Scoped
107 ;                        // Expect: CO = ContainsNestedClass | Scoped | Sealed
109 ;     union NestedUnion { int x; }; // Note clang not yiled 'HasUniqueName' for this type, but MSVC does.
110 ;                                   // Expect: CO = ForwardReference | Nested | Scoped
111 ;                                   // Expect: CO = Nested | Scoped | Sealed
112 ;     NestedUnion a;
113 ;     int b;
114 ;   };
115 ;   ComplexUnion c;
116 ; }
120 ; CHECK: Format: COFF-x86-64
121 ; CHECK: Arch: x86_64
122 ; CHECK: AddressSize: 64bit
123 ; CHECK: CodeViewTypes [
124 ; CHECK:   Section: .debug$T ({{.*}})
125 ; CHECK:   Magic: 0x4
128 ; CHECK:   Class (0x{{.*}}) {
129 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
130 ; CHECK:     MemberCount: 0
131 ; CHECK:     Properties [ (0x280)
132 ; CHECK:       ForwardReference (0x80)
133 ; CHECK:       HasUniqueName (0x200)
134 ; CHECK:     ]
135 ; CHECK:     FieldList: 0x0
136 ; CHECK:     DerivedFrom: 0x0
137 ; CHECK:     VShape: 0x0
138 ; CHECK:     SizeOf: 0
139 ; CHECK:     Name: EmptyClass
140 ; CHECK:     LinkageName: .?AVEmptyClass@@
141 ; CHECK:   }
142 ; CHECK:   Class (0x{{.*}}) {
143 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
144 ; CHECK:     MemberCount: 0
145 ; CHECK:     Properties [ (0x200)
146 ; CHECK:       HasUniqueName (0x200)
147 ; CHECK:     ]
148 ; CHECK:     FieldList: <field list> (0x{{.*}})
149 ; CHECK:     DerivedFrom: 0x0
150 ; CHECK:     VShape: 0x0
151 ; CHECK:     SizeOf: 1
152 ; CHECK:     Name: EmptyClass
153 ; CHECK:     LinkageName: .?AVEmptyClass@@
154 ; CHECK:   }
157 ; CHECK:   Class (0x{{.*}}) {
158 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
159 ; CHECK:     MemberCount: 0
160 ; CHECK:     Properties [ (0x280)
161 ; CHECK:       ForwardReference (0x80)
162 ; CHECK:       HasUniqueName (0x200)
163 ; CHECK:     ]
164 ; CHECK:     FieldList: 0x0
165 ; CHECK:     DerivedFrom: 0x0
166 ; CHECK:     VShape: 0x0
167 ; CHECK:     SizeOf: 0
168 ; CHECK:     Name: ExplicitCtorClass
169 ; CHECK:     LinkageName: .?AVExplicitCtorClass@@
170 ; CHECK:   }
171 ; CHECK:   Class (0x{{.*}}) {
172 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
173 ; CHECK:     MemberCount: 1
174 ; CHECK:     Properties [ (0x202)
175 ; CHECK:       HasConstructorOrDestructor (0x2)
176 ; CHECK:       HasUniqueName (0x200)
177 ; CHECK:     ]
178 ; CHECK:     FieldList: <field list> (0x{{.*}})
179 ; CHECK:     DerivedFrom: 0x0
180 ; CHECK:     VShape: 0x0
181 ; CHECK:     SizeOf: 1
182 ; CHECK:     Name: ExplicitCtorClass
183 ; CHECK:     LinkageName: .?AVExplicitCtorClass@@
184 ; CHECK:   }
187 ; CHECK:   Class (0x{{.*}}) {
188 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
189 ; CHECK:     MemberCount: 0
190 ; CHECK:     Properties [ (0x280)
191 ; CHECK:       ForwardReference (0x80)
192 ; CHECK:       HasUniqueName (0x200)
193 ; CHECK:     ]
194 ; CHECK:     FieldList: 0x0
195 ; CHECK:     DerivedFrom: 0x0
196 ; CHECK:     VShape: 0x0
197 ; CHECK:     SizeOf: 0
198 ; CHECK:     Name: DefaultedCtorClass
199 ; CHECK:     LinkageName: .?AVDefaultedCtorClass@@
200 ; CHECK:   }
201 ; CHECK:   Class (0x{{.*}}) {
202 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
203 ; CHECK:     MemberCount: 1
204 ; CHECK:     Properties [ (0x200)
205 ; CHECK:       HasUniqueName (0x200)
206 ; CHECK:     ]
207 ; CHECK:     FieldList: <field list> (0x{{.*}})
208 ; CHECK:     DerivedFrom: 0x0
209 ; CHECK:     VShape: 0x0
210 ; CHECK:     SizeOf: 1
211 ; CHECK:     Name: DefaultedCtorClass
212 ; CHECK:     LinkageName: .?AVDefaultedCtorClass@@
213 ; CHECK:   }
216 ; CHECK:   Class (0x{{.*}}) {
217 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
218 ; CHECK:     MemberCount: 0
219 ; CHECK:     Properties [ (0x280)
220 ; CHECK:       ForwardReference (0x80)
221 ; CHECK:       HasUniqueName (0x200)
222 ; CHECK:     ]
223 ; CHECK:     FieldList: 0x0
224 ; CHECK:     DerivedFrom: 0x0
225 ; CHECK:     VShape: 0x0
226 ; CHECK:     SizeOf: 0
227 ; CHECK:     Name: DefaultArgumentCtorClass
228 ; CHECK:     LinkageName: .?AVDefaultArgumentCtorClass@@
229 ; CHECK:   }
230 ; CHECK:   Class (0x{{.*}}) {
231 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
232 ; CHECK:     MemberCount: 1
233 ; CHECK:     Properties [ (0x202)
234 ; CHECK:       HasConstructorOrDestructor (0x2)
235 ; CHECK:       HasUniqueName (0x200)
236 ; CHECK:     ]
237 ; CHECK:     FieldList: <field list> (0x{{.*}})
238 ; CHECK:     DerivedFrom: 0x0
239 ; CHECK:     VShape: 0x0
240 ; CHECK:     SizeOf: 1
241 ; CHECK:     Name: DefaultArgumentCtorClass
242 ; CHECK:     LinkageName: .?AVDefaultArgumentCtorClass@@
243 ; CHECK:   }
246 ; CHECK:   Class (0x{{.*}}) {
247 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
248 ; CHECK:     MemberCount: 0
249 ; CHECK:     Properties [ (0x280)
250 ; CHECK:       ForwardReference (0x80)
251 ; CHECK:       HasUniqueName (0x200)
252 ; CHECK:     ]
253 ; CHECK:     FieldList: 0x0
254 ; CHECK:     DerivedFrom: 0x0
255 ; CHECK:     VShape: 0x0
256 ; CHECK:     SizeOf: 0
257 ; CHECK:     Name: UserDtorClass
258 ; CHECK:     LinkageName: .?AVUserDtorClass@@
259 ; CHECK:   }
260 ; CHECK:   Class (0x{{.*}}) {
261 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
262 ; CHECK:     MemberCount: 1
263 ; CHECK:     Properties [ (0x202)
264 ; CHECK:       HasConstructorOrDestructor (0x2)
265 ; CHECK:       HasUniqueName (0x200)
266 ; CHECK:     ]
267 ; CHECK:     FieldList: <field list> (0x{{.*}})
268 ; CHECK:     DerivedFrom: 0x0
269 ; CHECK:     VShape: 0x0
270 ; CHECK:     SizeOf: 1
271 ; CHECK:     Name: UserDtorClass
272 ; CHECK:     LinkageName: .?AVUserDtorClass@@
273 ; CHECK:   }
276 ; CHECK:   Class (0x{{.*}}) {
277 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
278 ; CHECK:     MemberCount: 0
279 ; CHECK:     Properties [ (0x280)
280 ; CHECK:       ForwardReference (0x80)
281 ; CHECK:       HasUniqueName (0x200)
282 ; CHECK:     ]
283 ; CHECK:     FieldList: 0x0
284 ; CHECK:     DerivedFrom: 0x0
285 ; CHECK:     VShape: 0x0
286 ; CHECK:     SizeOf: 0
287 ; CHECK:     Name: DefaultedDtorClass
288 ; CHECK:     LinkageName: .?AVDefaultedDtorClass@@
289 ; CHECK:   }
290 ; CHECK:   Class (0x{{.*}}) {
291 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
292 ; CHECK:     MemberCount: 1
293 ; CHECK:     Properties [ (0x200)
294 ; CHECK:       HasUniqueName (0x200)
295 ; CHECK:     ]
296 ; CHECK:     FieldList: <field list> (0x{{.*}})
297 ; CHECK:     DerivedFrom: 0x0
298 ; CHECK:     VShape: 0x0
299 ; CHECK:     SizeOf: 1
300 ; CHECK:     Name: DefaultedDtorClass
301 ; CHECK:     LinkageName: .?AVDefaultedDtorClass@@
302 ; CHECK:   }
305 ; CHECK:   Class (0x{{.*}}) {
306 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
307 ; CHECK:     MemberCount: 0
308 ; CHECK:     Properties [ (0x280)
309 ; CHECK:       ForwardReference (0x80)
310 ; CHECK:       HasUniqueName (0x200)
311 ; CHECK:     ]
312 ; CHECK:     FieldList: 0x0
313 ; CHECK:     DerivedFrom: 0x0
314 ; CHECK:     VShape: 0x0
315 ; CHECK:     SizeOf: 0
316 ; CHECK:     Name: AClass
317 ; CHECK:     LinkageName: .?AVAClass@@
318 ; CHECK:   }
319 ; CHECK:   Class (0x{{.*}}) {
320 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
321 ; CHECK:     MemberCount: 1
322 ; CHECK:     Properties [ (0x202)
323 ; CHECK:       HasConstructorOrDestructor (0x2)
324 ; CHECK:       HasUniqueName (0x200)
325 ; CHECK:     ]
326 ; CHECK:     FieldList: <field list> (0x{{.*}})
327 ; CHECK:     DerivedFrom: 0x0
328 ; CHECK:     VShape: 0x0
329 ; CHECK:     SizeOf: 1
330 ; CHECK:     Name: AClass
331 ; CHECK:     LinkageName: .?AVAClass@@
332 ; CHECK:   }
335 ; CHECK:   Class (0x{{.*}}) {
336 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
337 ; CHECK:     MemberCount: 0
338 ; CHECK:     Properties [ (0x280)
339 ; CHECK:       ForwardReference (0x80)
340 ; CHECK:       HasUniqueName (0x200)
341 ; CHECK:     ]
342 ; CHECK:     FieldList: 0x0
343 ; CHECK:     DerivedFrom: 0x0
344 ; CHECK:     VShape: 0x0
345 ; CHECK:     SizeOf: 0
346 ; CHECK:     Name: BClass
347 ; CHECK:     LinkageName: .?AVBClass@@
348 ; CHECK:   }
349 ; CHECK:   Class (0x{{.*}}) {
350 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
351 ; CHECK:     MemberCount: 1
352 ; CHECK:     Properties [ (0x200)
353 ; CHECK:       HasUniqueName (0x200)
354 ; CHECK:     ]
355 ; CHECK:     FieldList: <field list> (0x{{.*}})
356 ; CHECK:     DerivedFrom: 0x0
357 ; CHECK:     VShape: 0x0
358 ; CHECK:     SizeOf: 1
359 ; CHECK:     Name: BClass
360 ; CHECK:     LinkageName: .?AVBClass@@
361 ; CHECK:   }
364 ; CHECK:   Struct (0x{{.*}}) {
365 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
366 ; CHECK:     MemberCount: 0
367 ; CHECK:     Properties [ (0x280)
368 ; CHECK:       ForwardReference (0x80)
369 ; CHECK:       HasUniqueName (0x200)
370 ; CHECK:     ]
371 ; CHECK:     FieldList: 0x0
372 ; CHECK:     DerivedFrom: 0x0
373 ; CHECK:     VShape: 0x0
374 ; CHECK:     SizeOf: 0
375 ; CHECK:     Name: AStruct
376 ; CHECK:     LinkageName: .?AUAStruct@@
377 ; CHECK:   }
378 ; CHECK:   Struct (0x{{.*}}) {
379 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
380 ; CHECK:     MemberCount: 0
381 ; CHECK:     Properties [ (0x200)
382 ; CHECK:       HasUniqueName (0x200)
383 ; CHECK:     ]
384 ; CHECK:     FieldList: <field list> (0x{{.*}})
385 ; CHECK:     DerivedFrom: 0x0
386 ; CHECK:     VShape: 0x0
387 ; CHECK:     SizeOf: 1
388 ; CHECK:     Name: AStruct
389 ; CHECK:     LinkageName: .?AUAStruct@@
390 ; CHECK:   }
393 ; CHECK:   Struct (0x{{.*}}) {
394 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
395 ; CHECK:     MemberCount: 0
396 ; CHECK:     Properties [ (0x280)
397 ; CHECK:       ForwardReference (0x80)
398 ; CHECK:       HasUniqueName (0x200)
399 ; CHECK:     ]
400 ; CHECK:     FieldList: 0x0
401 ; CHECK:     DerivedFrom: 0x0
402 ; CHECK:     VShape: 0x0
403 ; CHECK:     SizeOf: 0
404 ; CHECK:     Name: BStruct
405 ; CHECK:     LinkageName: .?AUBStruct@@
406 ; CHECK:   }
407 ; CHECK:   Struct (0x{{.*}}) {
408 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
409 ; CHECK:     MemberCount: 1
410 ; CHECK:     Properties [ (0x202)
411 ; CHECK:       HasConstructorOrDestructor (0x2)
412 ; CHECK:       HasUniqueName (0x200)
413 ; CHECK:     ]
414 ; CHECK:     FieldList: <field list> (0x{{.*}})
415 ; CHECK:     DerivedFrom: 0x0
416 ; CHECK:     VShape: 0x0
417 ; CHECK:     SizeOf: 1
418 ; CHECK:     Name: BStruct
419 ; CHECK:     LinkageName: .?AUBStruct@@
420 ; CHECK:   }
423 ; CHECK:   Struct (0x{{.*}}) {
424 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
425 ; CHECK:     MemberCount: 0
426 ; CHECK:     Properties [ (0x380)
427 ; CHECK:       ForwardReference (0x80)
428 ; CHECK:       HasUniqueName (0x200)
429 ; CHECK:       Scoped (0x100)
430 ; CHECK:     ]
431 ; CHECK:     FieldList: 0x0
432 ; CHECK:     DerivedFrom: 0x0
433 ; CHECK:     VShape: 0x0
434 ; CHECK:     SizeOf: 0
435 ; CHECK:     Name: S::ComplexStruct
436 ; CHECK:     LinkageName: .?AUComplexStruct@?1??S@@YAXXZ@
437 ; CHECK:   }
438 ; CHECK:   Struct (0x{{.*}}) {
439 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
440 ; CHECK:     MemberCount: 0
441 ; CHECK:     Properties [ (0x388)
442 ; CHECK:       ForwardReference (0x80)
443 ; CHECK:       HasUniqueName (0x200)
444 ; CHECK:       Nested (0x8)
445 ; CHECK:       Scoped (0x100)
446 ; CHECK:     ]
447 ; CHECK:     FieldList: 0x0
448 ; CHECK:     DerivedFrom: 0x0
449 ; CHECK:     VShape: 0x0
450 ; CHECK:     SizeOf: 0
451 ; CHECK:     Name: S::ComplexStruct::S
452 ; CHECK:     LinkageName: .?AUS@ComplexStruct@?1??0@YAXXZ@
453 ; CHECK:   }
454 ; CHECK:   Struct (0x{{.*}}) {
455 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
456 ; CHECK:     MemberCount: 2
457 ; CHECK:     Properties [ (0x310)
458 ; CHECK:       ContainsNestedClass (0x10)
459 ; CHECK:       HasUniqueName (0x200)
460 ; CHECK:       Scoped (0x100)
461 ; CHECK:     ]
462 ; CHECK:     FieldList: <field list> (0x{{.*}})
463 ; CHECK:     DerivedFrom: 0x0
464 ; CHECK:     VShape: 0x0
465 ; CHECK:     SizeOf: 1
466 ; CHECK:     Name: S::ComplexStruct
467 ; CHECK:     LinkageName: .?AUComplexStruct@?1??S@@YAXXZ@
468 ; CHECK:   }
469 ; CHECK:   Struct (0x{{.*}}) {
470 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
471 ; CHECK:     MemberCount: 0
472 ; CHECK:     Properties [ (0x308)
473 ; CHECK:       HasUniqueName (0x200)
474 ; CHECK:       Nested (0x8)
475 ; CHECK:       Scoped (0x100)
476 ; CHECK:     ]
477 ; CHECK:     FieldList: <field list> (0x{{.*}})
478 ; CHECK:     DerivedFrom: 0x0
479 ; CHECK:     VShape: 0x0
480 ; CHECK:     SizeOf: 1
481 ; CHECK:     Name: S::ComplexStruct::S
482 ; CHECK:     LinkageName: .?AUS@ComplexStruct@?1??0@YAXXZ@
483 ; CHECK:   }
486 ; CHECK:   Union (0x1067) {
487 ; CHECK:     TypeLeafKind: LF_UNION (0x1506)
488 ; CHECK:     MemberCount: 0
489 ; CHECK:     Properties [ (0x280)
490 ; CHECK:       ForwardReference (0x80)
491 ; CHECK:       HasUniqueName (0x200)
492 ; CHECK:     ]
493 ; CHECK:     FieldList: 0x0
494 ; CHECK:     SizeOf: 0
495 ; CHECK:     Name: AUnion
496 ; CHECK:     LinkageName: .?ATAUnion@@
497 ; CHECK:   }
498 ; CHECK:   Union (0x106B) {
499 ; CHECK:     TypeLeafKind: LF_UNION (0x1506)
500 ; CHECK:     MemberCount: 0
501 ; CHECK:     Properties [ (0x600)
502 ; CHECK:       HasUniqueName (0x200)
503 ; CHECK:       Sealed (0x400)
504 ; CHECK:     ]
505 ; CHECK:     FieldList: <field list> (0x{{.*}})
506 ; CHECK:     SizeOf: 1
507 ; CHECK:     Name: AUnion
508 ; CHECK:     LinkageName: .?ATAUnion@@
509 ; CHECK:   }
512 ; CHECK:   Union (0x106E) {
513 ; CHECK:     TypeLeafKind: LF_UNION (0x1506)
514 ; CHECK:     MemberCount: 0
515 ; CHECK:     Properties [ (0x280)
516 ; CHECK:       ForwardReference (0x80)
517 ; CHECK:       HasUniqueName (0x200)
518 ; CHECK:     ]
519 ; CHECK:     FieldList: 0x0
520 ; CHECK:     SizeOf: 0
521 ; CHECK:     Name: BUnion
522 ; CHECK:     LinkageName: .?ATBUnion@@
523 ; CHECK:   }
524 ; CHECK:   Union (0x1075) {
525 ; CHECK:     TypeLeafKind: LF_UNION (0x1506)
526 ; CHECK:     MemberCount: 1
527 ; CHECK:     Properties [ (0x600)
528 ; CHECK:       HasUniqueName (0x200)
529 ; CHECK:       Sealed (0x400)
530 ; CHECK:     ]
531 ; CHECK:     FieldList: <field list> (0x{{.*}})
532 ; CHECK:     SizeOf: 1
533 ; CHECK:     Name: BUnion
534 ; CHECK:     LinkageName: .?ATBUnion@@
535 ; CHECK:   }
538 ; CHECK:   Union (0x{{.*}}) {
539 ; CHECK:     TypeLeafKind: LF_UNION (0x1506)
540 ; CHECK:     MemberCount: 0
541 ; CHECK:     Properties [ (0x380)
542 ; CHECK:       ForwardReference (0x80)
543 ; CHECK:       HasUniqueName (0x200)
544 ; CHECK:       Scoped (0x100)
545 ; CHECK:     ]
546 ; CHECK:     FieldList: 0x0
547 ; CHECK:     SizeOf: 0
548 ; CHECK:     Name: U::ComplexUnion
549 ; CHECK:     LinkageName: .?ATComplexUnion@?1??U@@YAXXZ@
550 ; CHECK:   }
551 ; CHECK:   Union (0x{{.*}}) {
552 ; CHECK:     TypeLeafKind: LF_UNION (0x1506)
553 ; CHECK:     MemberCount: 0
554 ; CHECK:     Properties [ (0x388)
555 ; CHECK:       ForwardReference (0x80)
556 ; CHECK:       HasUniqueName (0x200)
557 ; CHECK:       Nested (0x8)
558 ; CHECK:       Scoped (0x100)
559 ; CHECK:     ]
560 ; CHECK:     FieldList: 0x0
561 ; CHECK:     SizeOf: 0
562 ; CHECK:     Name: U::ComplexUnion::NestedUnion
563 ; CHECK:     LinkageName: .?ATNestedUnion@ComplexUnion@?1??U@@YAXXZ@
564 ; CHECK:   }
565 ; CHECK:   Union (0x{{.*}}) {
566 ; CHECK:     TypeLeafKind: LF_UNION (0x1506)
567 ; CHECK:     MemberCount: 3
568 ; CHECK:     Properties [ (0x710)
569 ; CHECK:       ContainsNestedClass (0x10)
570 ; CHECK:       HasUniqueName (0x200)
571 ; CHECK:       Scoped (0x100)
572 ; CHECK:       Sealed (0x400)
573 ; CHECK:     ]
574 ; CHECK:     FieldList: <field list> (0x{{.*}})
575 ; CHECK:     SizeOf: 4
576 ; CHECK:     Name: U::ComplexUnion
577 ; CHECK:     LinkageName: .?ATComplexUnion@?1??U@@YAXXZ@
578 ; CHECK:   }
579 ; CHECK:   Union (0x{{.*}}) {
580 ; CHECK:     TypeLeafKind: LF_UNION (0x1506)
581 ; CHECK:     MemberCount: 1
582 ; CHECK:     Properties [ (0x708)
583 ; CHECK:       HasUniqueName (0x200)
584 ; CHECK:       Nested (0x8)
585 ; CHECK:       Scoped (0x100)
586 ; CHECK:       Sealed (0x400)
587 ; CHECK:     ]
588 ; CHECK:     FieldList: <field list> (0x{{.*}})
589 ; CHECK:     SizeOf: 4
590 ; CHECK:     Name: U::ComplexUnion::NestedUnion
591 ; CHECK:     LinkageName: .?ATNestedUnion@ComplexUnion@?1??U@@YAXXZ@
592 ; CHECK:   }
595 ; CHECK:   Struct (0x{{.*}}) {
596 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
597 ; CHECK:     MemberCount: 0
598 ; CHECK:     Properties [ (0x280)
599 ; CHECK:       ForwardReference (0x80)
600 ; CHECK:       HasUniqueName (0x200)
601 ; CHECK:     ]
602 ; CHECK:     FieldList: 0x0
603 ; CHECK:     DerivedFrom: 0x0
604 ; CHECK:     VShape: 0x0
605 ; CHECK:     SizeOf: 0
606 ; CHECK:     Name: Foo
607 ; CHECK:     LinkageName: .?AUFoo@@
608 ; CHECK:   }
609 ; CHECK:   Struct (0x{{.*}}) {
610 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
611 ; CHECK:     MemberCount: 3
612 ; CHECK:     Properties [ (0x200)
613 ; CHECK:       HasUniqueName (0x200)
614 ; CHECK:     ]
615 ; CHECK:     FieldList: <field list> (0x{{.*}})
616 ; CHECK:     DerivedFrom: 0x0
617 ; CHECK:     VShape: 0x0
618 ; CHECK:     SizeOf: 4
619 ; CHECK:     Name: Foo
620 ; CHECK:     LinkageName: .?AUFoo@@
621 ; CHECK:   }
624 ; CHECK:   Struct (0x{{.*}}) {
625 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
626 ; CHECK:     MemberCount: 0
627 ; CHECK:     Properties [ (0x280)
628 ; CHECK:       ForwardReference (0x80)
629 ; CHECK:       HasUniqueName (0x200)
630 ; CHECK:     ]
631 ; CHECK:     FieldList: 0x0
632 ; CHECK:     DerivedFrom: 0x0
633 ; CHECK:     VShape: 0x0
634 ; CHECK:     SizeOf: 0
635 ; CHECK:     Name: Bar
636 ; CHECK:     LinkageName: .?AUBar@@
637 ; CHECK:   }
638 ; CHECK:   Struct (0x{{.*}}) {
639 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
640 ; CHECK:     MemberCount: 1
641 ; CHECK:     Properties [ (0x202)
642 ; CHECK:       HasConstructorOrDestructor (0x2)
643 ; CHECK:       HasUniqueName (0x200)
644 ; CHECK:     ]
645 ; CHECK:     FieldList: <field list> (0x{{.*}})
646 ; CHECK:     DerivedFrom: 0x0
647 ; CHECK:     VShape: 0x0
648 ; CHECK:     SizeOf: 4
649 ; CHECK:     Name: Bar
650 ; CHECK:     LinkageName: .?AUBar@@
651 ; CHECK:   }
652 ; CHECK: ]
655 ; ModuleID = 'class-options-common.cpp'
656 source_filename = "class-options.cpp"
657 target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
658 target triple = "x86_64-pc-windows-msvc19.15.26729"
660 %struct.Foo = type { i32 }
661 %struct.Bar = type { i32 }
662 %class.EmptyClass = type { i8 }
663 %class.ExplicitCtorClass = type { i8 }
664 %class.DefaultedCtorClass = type { i8 }
665 %class.DefaultArgumentCtorClass = type { i8 }
666 %class.UserDtorClass = type { i8 }
667 %class.DefaultedDtorClass = type { i8 }
668 %class.AClass = type { i8 }
669 %class.BClass = type { i8 }
670 %struct.AStruct = type { i8 }
671 %struct.BStruct = type { i8 }
672 %struct.ComplexStruct = type { %"struct.S()::ComplexStruct::S" }
673 %"struct.S()::ComplexStruct::S" = type { i8 }
674 %union.AUnion = type { i8 }
675 %union.BUnion = type { i8 }
676 %union.ComplexUnion = type { %"union.U()::ComplexUnion::NestedUnion" }
677 %"union.U()::ComplexUnion::NestedUnion" = type { i32 }
679 @"?f@@3UFoo@@A" = dso_local global %struct.Foo zeroinitializer, align 4, !dbg !0
680 @"?b@@3UBar@@A" = dso_local global %struct.Bar zeroinitializer, align 4, !dbg !6
682 ; Function Attrs: noinline nounwind optnone uwtable
683 define dso_local i8 @"?Func_EmptyClass@@YA?AVEmptyClass@@AEAV1@@Z"(%class.EmptyClass* dereferenceable(1) %arg) #0 !dbg !30 {
684 entry:
685   %retval = alloca %class.EmptyClass, align 1
686   %arg.addr = alloca %class.EmptyClass*, align 8
687   store %class.EmptyClass* %arg, %class.EmptyClass** %arg.addr, align 8
688   call void @llvm.dbg.declare(metadata %class.EmptyClass** %arg.addr, metadata !35, metadata !DIExpression()), !dbg !36
689   %0 = load %class.EmptyClass*, %class.EmptyClass** %arg.addr, align 8, !dbg !36
690   %coerce.dive = getelementptr inbounds %class.EmptyClass, %class.EmptyClass* %retval, i32 0, i32 0, !dbg !36
691   %1 = load i8, i8* %coerce.dive, align 1, !dbg !36
692   ret i8 %1, !dbg !36
695 ; Function Attrs: nounwind readnone speculatable
696 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
698 ; Function Attrs: noinline nounwind optnone uwtable
699 define dso_local void @"?Func_ExplicitCtorClass@@YA?AVExplicitCtorClass@@AEAV1@@Z"(%class.ExplicitCtorClass* noalias sret %agg.result, %class.ExplicitCtorClass* dereferenceable(1) %arg) #0 !dbg !37 {
700 entry:
701   %arg.addr = alloca %class.ExplicitCtorClass*, align 8
702   store %class.ExplicitCtorClass* %arg, %class.ExplicitCtorClass** %arg.addr, align 8
703   call void @llvm.dbg.declare(metadata %class.ExplicitCtorClass** %arg.addr, metadata !47, metadata !DIExpression()), !dbg !48
704   %0 = load %class.ExplicitCtorClass*, %class.ExplicitCtorClass** %arg.addr, align 8, !dbg !48
705   ret void, !dbg !48
708 ; Function Attrs: noinline nounwind optnone uwtable
709 define dso_local void @"?Func_DefaultedCtorClass@@YA?AVDefaultedCtorClass@@AEAV1@@Z"(%class.DefaultedCtorClass* noalias sret %agg.result, %class.DefaultedCtorClass* dereferenceable(1) %arg) #0 !dbg !49 {
710 entry:
711   %arg.addr = alloca %class.DefaultedCtorClass*, align 8
712   store %class.DefaultedCtorClass* %arg, %class.DefaultedCtorClass** %arg.addr, align 8
713   call void @llvm.dbg.declare(metadata %class.DefaultedCtorClass** %arg.addr, metadata !59, metadata !DIExpression()), !dbg !60
714   %0 = load %class.DefaultedCtorClass*, %class.DefaultedCtorClass** %arg.addr, align 8, !dbg !60
715   ret void, !dbg !60
718 ; Function Attrs: noinline nounwind optnone uwtable
719 define dso_local void @"?Func_DefaultArgumentCtorClass@@YA?AVDefaultArgumentCtorClass@@AEAV1@@Z"(%class.DefaultArgumentCtorClass* noalias sret %agg.result, %class.DefaultArgumentCtorClass* dereferenceable(1) %arg) #0 !dbg !61 {
720 entry:
721   %arg.addr = alloca %class.DefaultArgumentCtorClass*, align 8
722   store %class.DefaultArgumentCtorClass* %arg, %class.DefaultArgumentCtorClass** %arg.addr, align 8
723   call void @llvm.dbg.declare(metadata %class.DefaultArgumentCtorClass** %arg.addr, metadata !71, metadata !DIExpression()), !dbg !72
724   %0 = load %class.DefaultArgumentCtorClass*, %class.DefaultArgumentCtorClass** %arg.addr, align 8, !dbg !72
725   ret void, !dbg !72
728 ; Function Attrs: noinline nounwind optnone uwtable
729 define dso_local void @"?Func_UserDtorClass@@YA?AVUserDtorClass@@AEAV1@@Z"(%class.UserDtorClass* noalias sret %agg.result, %class.UserDtorClass* dereferenceable(1) %arg) #0 !dbg !73 {
730 entry:
731   %arg.addr = alloca %class.UserDtorClass*, align 8
732   store %class.UserDtorClass* %arg, %class.UserDtorClass** %arg.addr, align 8
733   call void @llvm.dbg.declare(metadata %class.UserDtorClass** %arg.addr, metadata !83, metadata !DIExpression()), !dbg !84
734   %0 = load %class.UserDtorClass*, %class.UserDtorClass** %arg.addr, align 8, !dbg !84
735   ret void, !dbg !84
738 ; Function Attrs: noinline nounwind optnone uwtable
739 define dso_local void @"?Func_DefaultedDtorClass@@YA?AVDefaultedDtorClass@@AEAV1@@Z"(%class.DefaultedDtorClass* noalias sret %agg.result, %class.DefaultedDtorClass* dereferenceable(1) %arg) #0 !dbg !85 {
740 entry:
741   %arg.addr = alloca %class.DefaultedDtorClass*, align 8
742   store %class.DefaultedDtorClass* %arg, %class.DefaultedDtorClass** %arg.addr, align 8
743   call void @llvm.dbg.declare(metadata %class.DefaultedDtorClass** %arg.addr, metadata !95, metadata !DIExpression()), !dbg !96
744   %0 = load %class.DefaultedDtorClass*, %class.DefaultedDtorClass** %arg.addr, align 8, !dbg !96
745   ret void, !dbg !96
748 ; Function Attrs: noinline nounwind optnone uwtable
749 define dso_local void @"?Func_AClass@@YA?AVAClass@@AEAV1@@Z"(%class.AClass* noalias sret %agg.result, %class.AClass* dereferenceable(1) %arg) #0 !dbg !97 {
750 entry:
751   %arg.addr = alloca %class.AClass*, align 8
752   store %class.AClass* %arg, %class.AClass** %arg.addr, align 8
753   call void @llvm.dbg.declare(metadata %class.AClass** %arg.addr, metadata !104, metadata !DIExpression()), !dbg !105
754   %0 = load %class.AClass*, %class.AClass** %arg.addr, align 8, !dbg !105
755   ret void, !dbg !105
758 ; Function Attrs: noinline nounwind optnone uwtable
759 define dso_local i8 @"?Func_BClass@@YA?AVBClass@@AEAV1@@Z"(%class.BClass* dereferenceable(1) %arg) #0 !dbg !106 {
760 entry:
761   %retval = alloca %class.BClass, align 1
762   %arg.addr = alloca %class.BClass*, align 8
763   store %class.BClass* %arg, %class.BClass** %arg.addr, align 8
764   call void @llvm.dbg.declare(metadata %class.BClass** %arg.addr, metadata !113, metadata !DIExpression()), !dbg !114
765   %0 = load %class.BClass*, %class.BClass** %arg.addr, align 8, !dbg !114
766   %coerce.dive = getelementptr inbounds %class.BClass, %class.BClass* %retval, i32 0, i32 0, !dbg !114
767   %1 = load i8, i8* %coerce.dive, align 1, !dbg !114
768   ret i8 %1, !dbg !114
771 ; Function Attrs: noinline nounwind optnone uwtable
772 define dso_local i8 @"?Func_AStruct@@YA?AUAStruct@@AEAU1@@Z"(%struct.AStruct* dereferenceable(1) %arg) #0 !dbg !115 {
773 entry:
774   %retval = alloca %struct.AStruct, align 1
775   %arg.addr = alloca %struct.AStruct*, align 8
776   store %struct.AStruct* %arg, %struct.AStruct** %arg.addr, align 8
777   call void @llvm.dbg.declare(metadata %struct.AStruct** %arg.addr, metadata !120, metadata !DIExpression()), !dbg !121
778   %0 = load %struct.AStruct*, %struct.AStruct** %arg.addr, align 8, !dbg !121
779   %coerce.dive = getelementptr inbounds %struct.AStruct, %struct.AStruct* %retval, i32 0, i32 0, !dbg !121
780   %1 = load i8, i8* %coerce.dive, align 1, !dbg !121
781   ret i8 %1, !dbg !121
784 ; Function Attrs: noinline nounwind optnone uwtable
785 define dso_local void @"?Func_BStruct@@YA?AUBStruct@@AEAU1@@Z"(%struct.BStruct* noalias sret %agg.result, %struct.BStruct* dereferenceable(1) %arg) #0 !dbg !122 {
786 entry:
787   %arg.addr = alloca %struct.BStruct*, align 8
788   store %struct.BStruct* %arg, %struct.BStruct** %arg.addr, align 8
789   call void @llvm.dbg.declare(metadata %struct.BStruct** %arg.addr, metadata !132, metadata !DIExpression()), !dbg !133
790   %0 = load %struct.BStruct*, %struct.BStruct** %arg.addr, align 8, !dbg !133
791   ret void, !dbg !133
794 ; Function Attrs: noinline nounwind optnone uwtable
795 define dso_local void @"?S@@YAXXZ"() #0 !dbg !134 {
796 entry:
797   %s = alloca %struct.ComplexStruct, align 1
798   call void @llvm.dbg.declare(metadata %struct.ComplexStruct* %s, metadata !137, metadata !DIExpression()), !dbg !142
799   ret void, !dbg !143
802 ; Function Attrs: noinline nounwind optnone uwtable
803 define dso_local i8 @"?Func_AUnion@@YA?ATAUnion@@AEAT1@@Z"(%union.AUnion* dereferenceable(1) %arg) #0 !dbg !144 {
804 entry:
805   %retval = alloca %union.AUnion, align 1
806   %arg.addr = alloca %union.AUnion*, align 8
807   store %union.AUnion* %arg, %union.AUnion** %arg.addr, align 8
808   call void @llvm.dbg.declare(metadata %union.AUnion** %arg.addr, metadata !149, metadata !DIExpression()), !dbg !150
809   %0 = load %union.AUnion*, %union.AUnion** %arg.addr, align 8, !dbg !150
810   %coerce.dive = getelementptr inbounds %union.AUnion, %union.AUnion* %retval, i32 0, i32 0, !dbg !150
811   %1 = load i8, i8* %coerce.dive, align 1, !dbg !150
812   ret i8 %1, !dbg !150
815 ; Function Attrs: noinline nounwind optnone uwtable
816 define dso_local void @"?Func_BUnion@@YA?ATBUnion@@AEAT1@@Z"(%union.BUnion* noalias sret %agg.result, %union.BUnion* dereferenceable(1) %arg) #0 !dbg !151 {
817 entry:
818   %arg.addr = alloca %union.BUnion*, align 8
819   store %union.BUnion* %arg, %union.BUnion** %arg.addr, align 8
820   call void @llvm.dbg.declare(metadata %union.BUnion** %arg.addr, metadata !161, metadata !DIExpression()), !dbg !162
821   %0 = load %union.BUnion*, %union.BUnion** %arg.addr, align 8, !dbg !162
822   ret void, !dbg !162
825 ; Function Attrs: noinline nounwind optnone uwtable
826 define dso_local void @"?U@@YAXXZ"() #0 !dbg !163 {
827 entry:
828   %c = alloca %union.ComplexUnion, align 4
829   call void @llvm.dbg.declare(metadata %union.ComplexUnion* %c, metadata !164, metadata !DIExpression()), !dbg !172
830   ret void, !dbg !173
833 attributes #0 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
834 attributes #1 = { nounwind readnone speculatable }
836 !llvm.dbg.cu = !{!2}
837 !llvm.module.flags = !{!25, !26, !27, !28}
838 !llvm.ident = !{!29}
840 !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
841 !1 = distinct !DIGlobalVariable(name: "f", linkageName: "?f@@3UFoo@@A", scope: !2, file: !8, line: 60, type: !13, isLocal: false, isDefinition: true)
842 !2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !3, producer: "clang version 8.0.0 ", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5, nameTableKind: None)
843 !3 = !DIFile(filename: "class-options-common.cpp", directory: "D:\5Cupstream\5Cllvm\5Ctest\5CDebugInfo\5CCOFF", checksumkind: CSK_MD5, checksum: "73d5c55a09899333f27526ae5ea8c878")
844 !4 = !{}
845 !5 = !{!0, !6}
846 !6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression())
847 !7 = distinct !DIGlobalVariable(name: "b", linkageName: "?b@@3UBar@@A", scope: !2, file: !8, line: 65, type: !9, isLocal: false, isDefinition: true)
848 !8 = !DIFile(filename: "class-options.cpp", directory: "D:\5Cupstream\5Cllvm\5Ctest\5CDebugInfo\5CCOFF")
849 !9 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Bar", file: !8, line: 62, size: 32, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !10, identifier: ".?AUBar@@")
850 !10 = !{!11}
851 !11 = !DIDerivedType(tag: DW_TAG_member, name: "m", scope: !9, file: !8, line: 64, baseType: !12, size: 32)
852 !12 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
853 !13 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Foo", file: !8, line: 55, size: 32, flags: DIFlagTypePassByValue, elements: !14, identifier: ".?AUFoo@@")
854 !14 = !{!15, !16, !20}
855 !15 = !DIDerivedType(tag: DW_TAG_member, name: "m", scope: !13, file: !8, line: 59, baseType: !12, size: 32)
856 !16 = !DISubprogram(name: "Foo", scope: !13, file: !8, line: 57, type: !17, isLocal: false, isDefinition: false, scopeLine: 57, flags: DIFlagPrototyped, isOptimized: false)
857 !17 = !DISubroutineType(types: !18)
858 !18 = !{null, !19}
859 !19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !13, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
860 !20 = !DISubprogram(name: "Foo", scope: !13, file: !8, line: 58, type: !21, isLocal: false, isDefinition: false, scopeLine: 58, flags: DIFlagPrototyped, isOptimized: false)
861 !21 = !DISubroutineType(types: !22)
862 !22 = !{null, !19, !23}
863 !23 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !24, size: 64)
864 !24 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !13)
865 !25 = !{i32 2, !"CodeView", i32 1}
866 !26 = !{i32 2, !"Debug Info Version", i32 3}
867 !27 = !{i32 1, !"wchar_size", i32 2}
868 !28 = !{i32 7, !"PIC Level", i32 2}
869 !29 = !{!"clang version 8.0.0 "}
870 !30 = distinct !DISubprogram(name: "Func_EmptyClass", linkageName: "?Func_EmptyClass@@YA?AVEmptyClass@@AEAV1@@Z", scope: !8, file: !8, line: 9, type: !31, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
871 !31 = !DISubroutineType(types: !32)
872 !32 = !{!33, !34}
873 !33 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "EmptyClass", file: !8, line: 7, size: 8, flags: DIFlagTypePassByValue, elements: !4, identifier: ".?AVEmptyClass@@")
874 !34 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !33, size: 64)
875 !35 = !DILocalVariable(name: "arg", arg: 1, scope: !30, file: !8, line: 9, type: !34)
876 !36 = !DILocation(line: 9, scope: !30)
877 !37 = distinct !DISubprogram(name: "Func_ExplicitCtorClass", linkageName: "?Func_ExplicitCtorClass@@YA?AVExplicitCtorClass@@AEAV1@@Z", scope: !8, file: !8, line: 16, type: !38, isLocal: false, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
878 !38 = !DISubroutineType(types: !39)
879 !39 = !{!40, !46}
880 !40 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "ExplicitCtorClass", file: !8, line: 11, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !41, identifier: ".?AVExplicitCtorClass@@")
881 !41 = !{!42}
882 !42 = !DISubprogram(name: "ExplicitCtorClass", scope: !40, file: !8, line: 14, type: !43, isLocal: false, isDefinition: false, scopeLine: 14, flags: DIFlagPublic | DIFlagExplicit | DIFlagPrototyped, isOptimized: false)
883 !43 = !DISubroutineType(types: !44)
884 !44 = !{null, !45}
885 !45 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !40, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
886 !46 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !40, size: 64)
887 !47 = !DILocalVariable(name: "arg", arg: 1, scope: !37, file: !8, line: 16, type: !46)
888 !48 = !DILocation(line: 16, scope: !37)
889 !49 = distinct !DISubprogram(name: "Func_DefaultedCtorClass", linkageName: "?Func_DefaultedCtorClass@@YA?AVDefaultedCtorClass@@AEAV1@@Z", scope: !8, file: !8, line: 23, type: !50, isLocal: false, isDefinition: true, scopeLine: 23, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
890 !50 = !DISubroutineType(types: !51)
891 !51 = !{!52, !58}
892 !52 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "DefaultedCtorClass", file: !8, line: 18, size: 8, flags: DIFlagTypePassByValue, elements: !53, identifier: ".?AVDefaultedCtorClass@@")
893 !53 = !{!54}
894 !54 = !DISubprogram(name: "DefaultedCtorClass", scope: !52, file: !8, line: 21, type: !55, isLocal: false, isDefinition: false, scopeLine: 21, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false)
895 !55 = !DISubroutineType(types: !56)
896 !56 = !{null, !57}
897 !57 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !52, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
898 !58 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !52, size: 64)
899 !59 = !DILocalVariable(name: "arg", arg: 1, scope: !49, file: !8, line: 23, type: !58)
900 !60 = !DILocation(line: 23, scope: !49)
901 !61 = distinct !DISubprogram(name: "Func_DefaultArgumentCtorClass", linkageName: "?Func_DefaultArgumentCtorClass@@YA?AVDefaultArgumentCtorClass@@AEAV1@@Z", scope: !8, file: !8, line: 30, type: !62, isLocal: false, isDefinition: true, scopeLine: 30, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
902 !62 = !DISubroutineType(types: !63)
903 !63 = !{!64, !70}
904 !64 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "DefaultArgumentCtorClass", file: !8, line: 25, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !65, identifier: ".?AVDefaultArgumentCtorClass@@")
905 !65 = !{!66}
906 !66 = !DISubprogram(name: "DefaultArgumentCtorClass", scope: !64, file: !8, line: 28, type: !67, isLocal: false, isDefinition: false, scopeLine: 28, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false)
907 !67 = !DISubroutineType(types: !68)
908 !68 = !{null, !69, !12}
909 !69 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !64, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
910 !70 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !64, size: 64)
911 !71 = !DILocalVariable(name: "arg", arg: 1, scope: !61, file: !8, line: 30, type: !70)
912 !72 = !DILocation(line: 30, scope: !61)
913 !73 = distinct !DISubprogram(name: "Func_UserDtorClass", linkageName: "?Func_UserDtorClass@@YA?AVUserDtorClass@@AEAV1@@Z", scope: !8, file: !8, line: 37, type: !74, isLocal: false, isDefinition: true, scopeLine: 37, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
914 !74 = !DISubroutineType(types: !75)
915 !75 = !{!76, !82}
916 !76 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "UserDtorClass", file: !8, line: 32, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !77, identifier: ".?AVUserDtorClass@@")
917 !77 = !{!78}
918 !78 = !DISubprogram(name: "~UserDtorClass", scope: !76, file: !8, line: 35, type: !79, isLocal: false, isDefinition: false, scopeLine: 35, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false)
919 !79 = !DISubroutineType(types: !80)
920 !80 = !{null, !81}
921 !81 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !76, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
922 !82 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !76, size: 64)
923 !83 = !DILocalVariable(name: "arg", arg: 1, scope: !73, file: !8, line: 37, type: !82)
924 !84 = !DILocation(line: 37, scope: !73)
925 !85 = distinct !DISubprogram(name: "Func_DefaultedDtorClass", linkageName: "?Func_DefaultedDtorClass@@YA?AVDefaultedDtorClass@@AEAV1@@Z", scope: !8, file: !8, line: 44, type: !86, isLocal: false, isDefinition: true, scopeLine: 44, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
926 !86 = !DISubroutineType(types: !87)
927 !87 = !{!88, !94}
928 !88 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "DefaultedDtorClass", file: !8, line: 39, size: 8, flags: DIFlagTypePassByValue, elements: !89, identifier: ".?AVDefaultedDtorClass@@")
929 !89 = !{!90}
930 !90 = !DISubprogram(name: "~DefaultedDtorClass", scope: !88, file: !8, line: 42, type: !91, isLocal: false, isDefinition: false, scopeLine: 42, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false)
931 !91 = !DISubroutineType(types: !92)
932 !92 = !{null, !93}
933 !93 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !88, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
934 !94 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !88, size: 64)
935 !95 = !DILocalVariable(name: "arg", arg: 1, scope: !85, file: !8, line: 44, type: !94)
936 !96 = !DILocation(line: 44, scope: !85)
937 !97 = distinct !DISubprogram(name: "Func_AClass", linkageName: "?Func_AClass@@YA?AVAClass@@AEAV1@@Z", scope: !8, file: !8, line: 49, type: !98, isLocal: false, isDefinition: true, scopeLine: 49, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
938 !98 = !DISubroutineType(types: !99)
939 !99 = !{!100, !103}
940 !100 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "AClass", file: !8, line: 46, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !101, identifier: ".?AVAClass@@")
941 !101 = !{!102}
942 !102 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !100, baseType: !40, flags: DIFlagPublic, extraData: i32 0)
943 !103 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !100, size: 64)
944 !104 = !DILocalVariable(name: "arg", arg: 1, scope: !97, file: !8, line: 49, type: !103)
945 !105 = !DILocation(line: 49, scope: !97)
946 !106 = distinct !DISubprogram(name: "Func_BClass", linkageName: "?Func_BClass@@YA?AVBClass@@AEAV1@@Z", scope: !8, file: !8, line: 53, type: !107, isLocal: false, isDefinition: true, scopeLine: 53, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
947 !107 = !DISubroutineType(types: !108)
948 !108 = !{!109, !112}
949 !109 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "BClass", file: !8, line: 51, size: 8, flags: DIFlagTypePassByValue, elements: !110, identifier: ".?AVBClass@@")
950 !110 = !{!111}
951 !111 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !109, file: !8, line: 51, baseType: !12, flags: DIFlagStaticMember)
952 !112 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !109, size: 64)
953 !113 = !DILocalVariable(name: "arg", arg: 1, scope: !106, file: !8, line: 53, type: !112)
954 !114 = !DILocation(line: 53, scope: !106)
955 !115 = distinct !DISubprogram(name: "Func_AStruct", linkageName: "?Func_AStruct@@YA?AUAStruct@@AEAU1@@Z", scope: !8, file: !8, line: 69, type: !116, isLocal: false, isDefinition: true, scopeLine: 69, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
956 !116 = !DISubroutineType(types: !117)
957 !117 = !{!118, !119}
958 !118 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "AStruct", file: !8, line: 67, size: 8, flags: DIFlagTypePassByValue, elements: !4, identifier: ".?AUAStruct@@")
959 !119 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !118, size: 64)
960 !120 = !DILocalVariable(name: "arg", arg: 1, scope: !115, file: !8, line: 69, type: !119)
961 !121 = !DILocation(line: 69, scope: !115)
962 !122 = distinct !DISubprogram(name: "Func_BStruct", linkageName: "?Func_BStruct@@YA?AUBStruct@@AEAU1@@Z", scope: !8, file: !8, line: 73, type: !123, isLocal: false, isDefinition: true, scopeLine: 73, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
963 !123 = !DISubroutineType(types: !124)
964 !124 = !{!125, !131}
965 !125 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "BStruct", file: !8, line: 71, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !126, identifier: ".?AUBStruct@@")
966 !126 = !{!127}
967 !127 = !DISubprogram(name: "BStruct", scope: !125, file: !8, line: 71, type: !128, isLocal: false, isDefinition: false, scopeLine: 71, flags: DIFlagPrototyped, isOptimized: false)
968 !128 = !DISubroutineType(types: !129)
969 !129 = !{null, !130}
970 !130 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !125, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
971 !131 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !125, size: 64)
972 !132 = !DILocalVariable(name: "arg", arg: 1, scope: !122, file: !8, line: 73, type: !131)
973 !133 = !DILocation(line: 73, scope: !122)
974 !134 = distinct !DISubprogram(name: "S", linkageName: "?S@@YAXXZ", scope: !8, file: !8, line: 75, type: !135, isLocal: false, isDefinition: true, scopeLine: 75, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
975 !135 = !DISubroutineType(types: !136)
976 !136 = !{null}
977 !137 = !DILocalVariable(name: "s", scope: !134, file: !8, line: 85, type: !138)
978 !138 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "ComplexStruct", scope: !134, file: !8, line: 76, size: 8, flags: DIFlagTypePassByValue, elements: !139, identifier: ".?AUComplexStruct@?1??S@@YAXXZ@")
979 !139 = !{!140, !141}
980 !140 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", scope: !138, file: !8, line: 80, size: 8, flags: DIFlagTypePassByValue, elements: !4, identifier: ".?AUS@ComplexStruct@?1??0@YAXXZ@")
981 !141 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !138, file: !8, line: 83, baseType: !140, size: 8)
982 !142 = !DILocation(line: 85, scope: !134)
983 !143 = !DILocation(line: 86, scope: !134)
984 !144 = distinct !DISubprogram(name: "Func_AUnion", linkageName: "?Func_AUnion@@YA?ATAUnion@@AEAT1@@Z", scope: !8, file: !8, line: 90, type: !145, isLocal: false, isDefinition: true, scopeLine: 90, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
985 !145 = !DISubroutineType(types: !146)
986 !146 = !{!147, !148}
987 !147 = distinct !DICompositeType(tag: DW_TAG_union_type, name: "AUnion", file: !8, line: 88, size: 8, flags: DIFlagTypePassByValue, elements: !4, identifier: ".?ATAUnion@@")
988 !148 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !147, size: 64)
989 !149 = !DILocalVariable(name: "arg", arg: 1, scope: !144, file: !8, line: 90, type: !148)
990 !150 = !DILocation(line: 90, scope: !144)
991 !151 = distinct !DISubprogram(name: "Func_BUnion", linkageName: "?Func_BUnion@@YA?ATBUnion@@AEAT1@@Z", scope: !8, file: !8, line: 94, type: !152, isLocal: false, isDefinition: true, scopeLine: 94, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
992 !152 = !DISubroutineType(types: !153)
993 !153 = !{!154, !160}
994 !154 = distinct !DICompositeType(tag: DW_TAG_union_type, name: "BUnion", file: !8, line: 92, size: 8, flags: DIFlagTypePassByValue, elements: !155, identifier: ".?ATBUnion@@")
995 !155 = !{!156}
996 !156 = !DISubprogram(name: "BUnion", scope: !154, file: !8, line: 92, type: !157, isLocal: false, isDefinition: false, scopeLine: 92, flags: DIFlagPrototyped, isOptimized: false)
997 !157 = !DISubroutineType(types: !158)
998 !158 = !{null, !159}
999 !159 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !154, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
1000 !160 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !154, size: 64)
1001 !161 = !DILocalVariable(name: "arg", arg: 1, scope: !151, file: !8, line: 94, type: !160)
1002 !162 = !DILocation(line: 94, scope: !151)
1003 !163 = distinct !DISubprogram(name: "U", linkageName: "?U@@YAXXZ", scope: !8, file: !8, line: 96, type: !135, isLocal: false, isDefinition: true, scopeLine: 96, flags: DIFlagPrototyped, isOptimized: false, unit: !2, retainedNodes: !4)
1004 !164 = !DILocalVariable(name: "c", scope: !163, file: !8, line: 105, type: !165)
1005 !165 = distinct !DICompositeType(tag: DW_TAG_union_type, name: "ComplexUnion", scope: !163, file: !8, line: 97, size: 32, flags: DIFlagTypePassByValue, elements: !166, identifier: ".?ATComplexUnion@?1??U@@YAXXZ@")
1006 !166 = !{!167, !170, !171}
1007 !167 = distinct !DICompositeType(tag: DW_TAG_union_type, name: "NestedUnion", scope: !165, file: !8, line: 100, size: 32, flags: DIFlagTypePassByValue, elements: !168, identifier: ".?ATNestedUnion@ComplexUnion@?1??U@@YAXXZ@")
1008 !168 = !{!169}
1009 !169 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !167, file: !8, line: 100, baseType: !12, size: 32)
1010 !170 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !165, file: !8, line: 102, baseType: !167, size: 32)
1011 !171 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !165, file: !8, line: 103, baseType: !12, size: 32)
1012 !172 = !DILocation(line: 105, scope: !163)
1013 !173 = !DILocation(line: 106, scope: !163)