llvm.org GIT mirror llvm / 65de1d1
Removing block comments from CodeView records in assembly files & related code cleanup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369860 91177308-0d34-0410-b5e6-96231b3b80d8 Nilanjana Basu 28 days ago
11 changed file(s) with 69 addition(s) and 756 deletion(s). Raw diff Collapse all Expand all
1010
1111 #include "llvm/DebugInfo/CodeView/CVRecord.h"
1212 #include "llvm/DebugInfo/CodeView/TypeRecord.h"
13 #include "llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h"
1413 #include "llvm/Support/Error.h"
1514
1615 namespace llvm {
2928
3029 Error visitTypeRecord(CVType &Record, TypeIndex Index,
3130 TypeVisitorCallbacks &Callbacks,
32 VisitorDataSource Source = VDS_BytesPresent);
33 Error visitTypeRecord(CVType &Record, TypeIndex Index,
34 TypeVisitorCallbackPipeline &Callbacks,
3531 VisitorDataSource Source = VDS_BytesPresent);
3632 Error visitTypeRecord(CVType &Record, TypeVisitorCallbacks &Callbacks,
3733 VisitorDataSource Source = VDS_BytesPresent);
8181 Pipeline.push_back(&Callbacks);
8282 }
8383
84 void addCallbackToPipelineFront(TypeVisitorCallbacks &Callbacks) {
85 auto CallBackItr = Pipeline.begin();
86 Pipeline.insert(CallBackItr, &Callbacks);
87 }
88
8984 #define TYPE_RECORD(EnumName, EnumVal, Name) \
9085 Error visitKnownRecord(CVType &CVR, Name##Record &Record) override { \
9186 return visitKnownRecordImpl(CVR, Record); \
641641 OS.SwitchSection(Asm->getObjFileLowering().getCOFFDebugTypesSection());
642642 emitCodeViewMagicVersion();
643643
644 SmallString<8> CommentPrefix;
645 if (OS.isVerboseAsm()) {
646 CommentPrefix += '\t';
647 CommentPrefix += Asm->MAI->getCommentString();
648 CommentPrefix += ' ';
649 }
650
651644 TypeTableCollection Table(TypeTable.records());
652645 TypeVisitorCallbackPipeline Pipeline;
653 SmallString<512> CommentBlock;
654 raw_svector_ostream CommentOS(CommentBlock);
655 std::unique_ptr SP;
656 std::unique_ptr TDV;
657
658 if (OS.isVerboseAsm()) {
659 // To construct block comment describing the type record for readability.
660 SP = std::make_unique(CommentOS);
661 SP->setPrefix(CommentPrefix);
662 TDV = std::make_unique(Table, SP.get(), false);
663 Pipeline.addCallbackToPipeline(*TDV);
664 }
665646
666647 // To emit type record using Codeview MCStreamer adapter
667648 CVMCAdapter CVMCOS(OS, Table);
673654 // This will fail if the record data is invalid.
674655 CVType Record = Table.getType(*B);
675656
676 CommentBlock.clear();
677657 Error E = codeview::visitTypeRecord(Record, *B, Pipeline);
678658
679659 if (E) {
681661 llvm_unreachable("produced malformed type record");
682662 }
683663
684 if (OS.isVerboseAsm()) {
685 // emitRawComment will insert its own tab and comment string before
686 // the first line, so strip off our first one. It also prints its own
687 // newline.
688 OS.emitRawComment(
689 CommentOS.str().drop_front(CommentPrefix.size() - 1).rtrim());
690 }
691664 B = Table.getNext(*B);
692665 }
693666 }
208208 }
209209 }
210210
211 VisitHelper(TypeVisitorCallbackPipeline &Callbacks, VisitorDataSource Source)
212 : Visitor((Source == VDS_BytesPresent) ? Pipeline : Callbacks) {
213 if (Source == VDS_BytesPresent) {
214 Pipeline = Callbacks;
215 Pipeline.addCallbackToPipelineFront(Deserializer);
216 }
217 }
218
219211 TypeDeserializer Deserializer;
220212 TypeVisitorCallbackPipeline Pipeline;
221213 CVTypeVisitor Visitor;
224216
225217 Error llvm::codeview::visitTypeRecord(CVType &Record, TypeIndex Index,
226218 TypeVisitorCallbacks &Callbacks,
227 VisitorDataSource Source) {
228 VisitHelper V(Callbacks, Source);
229 return V.Visitor.visitTypeRecord(Record, Index);
230 }
231
232 Error llvm::codeview::visitTypeRecord(CVType &Record, TypeIndex Index,
233 TypeVisitorCallbackPipeline &Callbacks,
234219 VisitorDataSource Source) {
235220 VisitHelper V(Callbacks, Source);
236221 return V.Visitor.visitTypeRecord(Record, Index);
1616 ; FIXME: sizeof(a) in the user program is 1, but we claim it is 4 because
1717 ; sometimes the frontend lies to us. See array-types-advanced.ll for an example.
1818 ;
19 ; CHECK: Array ({{.*}}) {
20 ; CHECK: TypeLeafKind: LF_ARRAY (0x1503)
21 ; CHECK: ElementType: YYSTYPE ({{.*}})
22 ; CHECK: IndexType: unsigned __int64 (0x23)
23 ; CHECK: SizeOf: 4
24 ; CHECK: Name:
25 ; CHECK: }
19 ; CHECK: # Array (0x1004)
20 ; CHECK: .short 0xe # Record length
21 ; CHECK: .short 0x1503 # Record kind: LF_ARRAY
22 ; CHECK: .long 0x1003 # ElementType: YYSTYPE
23 ; CHECK: .long 0x23 # IndexType: unsigned __int64
24 ; CHECK: .short 0x4 # SizeOf
25 ; CHECK: .byte 0 # Name
26 ; CHECK: .byte 241
2627
27 ; sizeof(YYSTYPE) == 4
28 ; CHECK: Union ({{.*}}) {
29 ; CHECK: TypeLeafKind: LF_UNION (0x1506)
30 ; CHECK: MemberCount: 1
31 ; CHECK: Properties [ (0x600)
32 ; CHECK: HasUniqueName (0x200)
33 ; CHECK: Sealed (0x400)
34 ; CHECK: ]
35 ; CHECK: FieldList:
36 ; CHECK: SizeOf: 4
37 ; CHECK: Name: YYSTYPE
38 ; CHECK: LinkageName: .?ATYYSTYPE@@
39 ; CHECK: }
28 ; CHECK: # Union (0x1006)
29 ; CHECK: .short 0x22 # Record length
30 ; CHECK: .short 0x1506 # Record kind: LF_UNION
31 ; CHECK: .short 0x1 # MemberCount
32 ; CHECK: .short 0x600 # Properties ( HasUniqueName (0x200) | Sealed (0x400) )
33 ; CHECK: .long 0x1005 # FieldList:
34 ; CHECK: .short 0x4 # SizeOf
35 ; CHECK: .asciz "YYSTYPE" # Name
36 ; CHECK: .asciz ".?ATYYSTYPE@@" # LinkageName
4037
4138 ; ModuleID = 'llvm-link'
4239 source_filename = "llvm-link"
661661 ; ASM-INLINE-COMMENTS: .short 0x3 # Attrs: Public
662662 ; ASM-INLINE-COMMENTS: .short 0x0
663663 ; ASM-INLINE-COMMENTS: .long 0x1087 # Type: void Foo::(const Foo&)
664 ; ASM-INLINE-COMMENTS: # MethodOverloadList (0x1088) {
665 ; ASM-INLINE-COMMENTS: # TypeLeafKind: LF_METHODLIST (0x1206)
666 ; ASM-INLINE-COMMENTS: # Method [
667 ; ASM-INLINE-COMMENTS: # AccessSpecifier: Public (0x3)
668 ; ASM-INLINE-COMMENTS: # Type: void Foo::() (0x1083)
669 ; ASM-INLINE-COMMENTS: # ]
670 ; ASM-INLINE-COMMENTS: # Method [
671 ; ASM-INLINE-COMMENTS: # AccessSpecifier: Public (0x3)
672 ; ASM-INLINE-COMMENTS: # Type: void Foo::(const Foo&) (0x1087)
673 ; ASM-INLINE-COMMENTS: # ]
674 ; ASM-INLINE-COMMENTS: # }
675664
676665
677666 ; ModuleID = 'class-options-common.cpp'
7474
7575 ; ASM: .section .debug$T,"dr"
7676 ; ASM: .long 4 # Debug section magic
77 ; ASM: # ArgList (0x1000) {
78 ; ASM: # TypeLeafKind: LF_ARGLIST (0x1201)
79 ; ASM: # NumArgs: 0
80 ; ASM: # Arguments [
81 ; ASM: # ]
82 ; ASM: # }
83 ; ASM: # Procedure (0x1001) {
84 ; ASM: # TypeLeafKind: LF_PROCEDURE (0x1008)
85 ; ASM: # ReturnType: void (0x3)
86 ; ASM: # CallingConvention: NearC (0x0)
87 ; ASM: # FunctionOptions [ (0x0)
88 ; ASM: # ]
89 ; ASM: # NumParameters: 0
90 ; ASM: # ArgListType: () (0x1000)
91 ; ASM: # }
92 ; ASM: # FuncId (0x1002) {
93 ; ASM: # TypeLeafKind: LF_FUNC_ID (0x1601)
94 ; ASM: # ParentScope: 0x0
95 ; ASM: # FunctionType: void () (0x1001)
96 ; ASM: # Name: bar
97 ; ASM: # }
98 ; ASM: # FuncId (0x1003) {
99 ; ASM: # TypeLeafKind: LF_FUNC_ID (0x1601)
100 ; ASM: # ParentScope: 0x0
101 ; ASM: # FunctionType: void () (0x1001)
102 ; ASM: # Name: foo
103 ; ASM: # }
77 ; ASM: # ArgList (0x1000)
78 ; ASM: .short 0x6 # Record length
79 ; ASM: .short 0x1201 # Record kind: LF_ARGLIST
80 ; ASM: .long 0x0 # NumArgs
81 ; ASM: # Procedure (0x1001)
82 ; ASM: .short 0xe # Record length
83 ; ASM: .short 0x1008 # Record kind: LF_PROCEDURE
84 ; ASM: .long 0x3 # ReturnType: void
85 ; ASM: .byte 0x0 # CallingConvention: NearC
86 ; ASM: .byte 0x0 # FunctionOptions
87 ; ASM: .short 0x0 # NumParameters
88 ; ASM: .long 0x1000 # ArgListType: ()
89 ; ASM: # FuncId (0x1002)
90 ; ASM: .short 0xe # Record length
91 ; ASM: .short 0x1601 # Record kind: LF_FUNC_ID
92 ; ASM: .long 0x0 # ParentScope
93 ; ASM: .long 0x1001 # FunctionType: void ()
94 ; ASM: .asciz "bar" # Name
95 ; ASM: # FuncId (0x1003)
96 ; ASM: .short 0xe # Record length
97 ; ASM: .short 0x1601 # Record kind: LF_FUNC_ID
98 ; ASM: .long 0x0 # ParentScope
99 ; ASM: .long 0x1001 # FunctionType: void ()
100 ; ASM: .asciz "foo" # Name
104101
105102 ; We should only the LF_FUNC_ID records that we needed to reference.
106103 ; OBJ: CodeViewTypes [
1111 ; collision between this LF_BITFIELD and LF_MODIFIER record, so we only emitted
1212 ; one under the assumption that the other was redundant. Check that we emit both.
1313
14 ; CHECK-LABEL: # BitField ({{.*}}) {
15 ; CHECK-NEXT: # TypeLeafKind: LF_BITFIELD (0x1205)
16 ; CHECK-NEXT: # Type: unsigned char (0x20)
17 ; CHECK-NEXT: # BitSize: 1
18 ; CHECK-NEXT: # BitOffset: 0
19 ; CHECK-NEXT: # }
14 ; CHECK-LABEL: # BitField (0x1001)
15 ; CHECK-NEXT: .short 0xa # Record length
16 ; CHECK-NEXT: .short 0x1205 # Record kind: LF_BITFIELD
17 ; CHECK-NEXT: .long 0x20 # Type: unsigned char
18 ; CHECK-NEXT: .byte 0x1 # BitSize
19 ; CHECK-NEXT: .byte 0x0 # BitOffset
20 ; CHECK-NEXT: .byte 242
21 ; CHECK-NEXT: .byte 241
2022
21 ; CHECK-LABEL: # Modifier ({{.*}}) {
22 ; CHECK-NEXT: # TypeLeafKind: LF_MODIFIER (0x1001)
23 ; CHECK-NEXT: # ModifiedType: unsigned char (0x20)
24 ; CHECK-NEXT: # Modifiers [ (0x1)
25 ; CHECK-NEXT: # Const (0x1)
26 ; CHECK-NEXT: # ]
27 ; CHECK-NEXT: # }
23 ; CHECK-LABEL: # Modifier (0x1007)
24 ; CHECK-NEXT: .short 0xa # Record length
25 ; CHECK-NEXT: .short 0x1001 # Record kind: LF_MODIFIER
26 ; CHECK-NEXT: .long 0x20 # ModifiedType: unsigned char
27 ; CHECK-NEXT: .short 0x1 # Modifiers ( Const (0x1) )
28 ; CHECK-NEXT: .byte 242
29 ; CHECK-NEXT: .byte 241
2830
2931 ; ModuleID = 't.cpp'
3032 source_filename = "t.cpp"
3939 !27 = !DIDerivedType(tag: DW_TAG_member, name: "Size", scope: !1, file: !1, baseType: !26, size: 32, offset: 32)
4040 !28 = !DILocation(line: 1, scope: !6)
4141
42 ; CHECK: # Struct
43 ; CHECK: # TypeLeafKind: LF_STRUCTURE
44 ; CHECK: # MemberCount: 0
45 ; CHECK: # Properties [
46 ; CHECK: # ForwardReference
47 ; CHECK: # ]
48 ; CHECK: # FieldList: 0x0
49 ; CHECK: # DerivedFrom: 0x0
50 ; CHECK: # VShape: 0x0
51 ; CHECK: # SizeOf: 0
52 ; CHECK: # Name: __block_descriptor
53 ; CHECK: # }
54
42 ; CHECK: # Struct (0x1003)
43 ; CHECK: .short 0x2a # Record length
44 ; CHECK: .short 0x1505 # Record kind: LF_STRUCTURE
45 ; CHECK: .short 0x0 # MemberCount
46 ; CHECK: .short 0x80 # Properties ( ForwardReference (0x80) )
47 ; CHECK: .long 0x0 # FieldList
48 ; CHECK: .long 0x0 # DerivedFrom
49 ; CHECK: .long 0x0 # VShape
50 ; CHECK: .short 0x0 # SizeOf
51 ; CHECK: .asciz "__block_descriptor" # Name
52 ; CHECK: .byte 243
53 ; CHECK: .byte 242
54 ; CHECK: .byte 241
356356 ; ASM: .long 0x40 # Argument: float
357357 ; ASM: .long 0x41 # Argument: double
358358 ; ASM: .long 0x13 # Argument: __int64
359 ; ASM: # ArgList (0x1000) {
360 ; ASM: # TypeLeafKind: LF_ARGLIST (0x1201)
361 ; ASM: # NumArgs: 3
362 ; ASM: # Arguments [
363 ; ASM: # ArgType: float (0x40)
364 ; ASM: # ArgType: double (0x41)
365 ; ASM: # ArgType: __int64 (0x13)
366 ; ASM: # ]
367 ; ASM: # }
368359 ; ASM: # Procedure (0x1001)
369360 ; ASM: .short 0xe # Record length
370361 ; ASM: .short 0x1008 # Record kind: LF_PROCEDURE
373364 ; ASM: .byte 0x0 # FunctionOptions
374365 ; ASM: .short 0x3 # NumParameters
375366 ; ASM: .long 0x1000 # ArgListType: (float, double, __int64)
376 ; ASM: # Procedure (0x1001) {
377 ; ASM: # TypeLeafKind: LF_PROCEDURE (0x1008)
378 ; ASM: # ReturnType: void (0x3)
379 ; ASM: # CallingConvention: NearC (0x0)
380 ; ASM: # FunctionOptions [ (0x0)
381 ; ASM: # ]
382 ; ASM: # NumParameters: 3
383 ; ASM: # ArgListType: (float, double, __int64) (0x1000)
384 ; ASM: # }
385367 ; ASM: # FuncId (0x1002)
386368 ; ASM: .short 0xe # Record length
387369 ; ASM: .short 0x1601 # Record kind: LF_FUNC_ID
390372 ; ASM: .asciz "f" # Name
391373 ; ASM: .byte 242
392374 ; ASM: .byte 241
393 ; ASM: # FuncId (0x1002) {
394 ; ASM: # TypeLeafKind: LF_FUNC_ID (0x1601)
395 ; ASM: # ParentScope: 0x0
396 ; ASM: # FunctionType: void (float, double, __int64) (0x1001)
397 ; ASM: # Name: f
398 ; ASM: # }
399375 ; ASM: # Modifier (0x1003)
400376 ; ASM: .short 0xa # Record length
401377 ; ASM: .short 0x1001 # Record kind: LF_MODIFIER
403379 ; ASM: .short 0x1 # Modifiers ( Const (0x1) )
404380 ; ASM: .byte 242
405381 ; ASM: .byte 241
406 ; ASM: # Modifier (0x1003) {
407 ; ASM: # TypeLeafKind: LF_MODIFIER (0x1001)
408 ; ASM: # ModifiedType: int (0x74)
409 ; ASM: # Modifiers [ (0x1)
410 ; ASM: # Const (0x1)
411 ; ASM: # ]
412 ; ASM: # }
413382 ; ASM: # Pointer (0x1004)
414383 ; ASM: .short 0xa # Record length
415384 ; ASM: .short 0x1002 # Record kind: LF_POINTER
416385 ; ASM: .long 0x1003 # PointeeType: const int
417386 ; ASM: .long 0x1000c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ]
418 ; ASM: # Pointer (0x1004) {
419 ; ASM: # TypeLeafKind: LF_POINTER (0x1002)
420 ; ASM: # PointeeType: const int (0x1003)
421 ; ASM: # PtrType: Near64 (0xC)
422 ; ASM: # PtrMode: Pointer (0x0)
423 ; ASM: # IsFlat: 0
424 ; ASM: # IsConst: 0
425 ; ASM: # IsVolatile: 0
426 ; ASM: # IsUnaligned: 0
427 ; ASM: # IsRestrict: 0
428 ; ASM: # IsThisPtr&: 0
429 ; ASM: # IsThisPtr&&: 0
430 ; ASM: # SizeOf: 8
431 ; ASM: # }
432387 ; ASM: # Struct (0x1005)
433388 ; ASM: .short 0x16 # Record length
434389 ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE
439394 ; ASM: .long 0x0 # VShape
440395 ; ASM: .short 0x0 # SizeOf
441396 ; ASM: .asciz "A" # Name
442 ; ASM: # Struct (0x1005) {
443 ; ASM: # TypeLeafKind: LF_STRUCTURE (0x1505)
444 ; ASM: # MemberCount: 0
445 ; ASM: # Properties [ (0x80)
446 ; ASM: # ForwardReference (0x80)
447 ; ASM: # ]
448 ; ASM: # FieldList: 0x0
449 ; ASM: # DerivedFrom: 0x0
450 ; ASM: # VShape: 0x0
451 ; ASM: # SizeOf: 0
452 ; ASM: # Name: A
453 ; ASM: # }
454397 ; ASM: # Pointer (0x1006)
455398 ; ASM: .short 0x12 # Record length
456399 ; ASM: .short 0x1002 # Record kind: LF_POINTER
460403 ; ASM: .short 0x4 # Representation: GeneralData
461404 ; ASM: .byte 242
462405 ; ASM: .byte 241
463 ; ASM: # Pointer (0x1006) {
464 ; ASM: # TypeLeafKind: LF_POINTER (0x1002)
465 ; ASM: # PointeeType: int (0x74)
466 ; ASM: # PtrType: Near64 (0xC)
467 ; ASM: # PtrMode: PointerToDataMember (0x2)
468 ; ASM: # IsFlat: 0
469 ; ASM: # IsConst: 0
470 ; ASM: # IsVolatile: 0
471 ; ASM: # IsUnaligned: 0
472 ; ASM: # IsRestrict: 0
473 ; ASM: # IsThisPtr&: 0
474 ; ASM: # IsThisPtr&&: 0
475 ; ASM: # SizeOf: 4
476 ; ASM: # ClassType: A (0x1005)
477 ; ASM: # Representation: GeneralData (0x4)
478 ; ASM: # }
479406 ; ASM: # Pointer (0x1007)
480407 ; ASM: .short 0xa # Record length
481408 ; ASM: .short 0x1002 # Record kind: LF_POINTER
482409 ; ASM: .long 0x1005 # PointeeType: A
483410 ; ASM: .long 0x1040c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8, isConst ]
484 ; ASM: # Pointer (0x1007) {
485 ; ASM: # TypeLeafKind: LF_POINTER (0x1002)
486 ; ASM: # PointeeType: A (0x1005)
487 ; ASM: # PtrType: Near64 (0xC)
488 ; ASM: # PtrMode: Pointer (0x0)
489 ; ASM: # IsFlat: 0
490 ; ASM: # IsConst: 1
491 ; ASM: # IsVolatile: 0
492 ; ASM: # IsUnaligned: 0
493 ; ASM: # IsRestrict: 0
494 ; ASM: # IsThisPtr&: 0
495 ; ASM: # IsThisPtr&&: 0
496 ; ASM: # SizeOf: 8
497 ; ASM: # }
498411 ; ASM: # ArgList (0x1008)
499412 ; ASM: .short 0x6 # Record length
500413 ; ASM: .short 0x1201 # Record kind: LF_ARGLIST
501414 ; ASM: .long 0x0 # NumArgs
502 ; ASM: # ArgList (0x1008) {
503 ; ASM: # TypeLeafKind: LF_ARGLIST (0x1201)
504 ; ASM: # NumArgs: 0
505 ; ASM: # Arguments [
506 ; ASM: # ]
507 ; ASM: # }
508415 ; ASM: # MemberFunction (0x1009)
509416 ; ASM: .short 0x1a # Record length
510417 ; ASM: .short 0x1009 # Record kind: LF_MFUNCTION
516423 ; ASM: .short 0x0 # NumParameters
517424 ; ASM: .long 0x1008 # ArgListType: ()
518425 ; ASM: .long 0x0 # ThisAdjustment
519 ; ASM: # MemberFunction (0x1009) {
520 ; ASM: # TypeLeafKind: LF_MFUNCTION (0x1009)
521 ; ASM: # ReturnType: void (0x3)
522 ; ASM: # ClassType: A (0x1005)
523 ; ASM: # ThisType: A* const (0x1007)
524 ; ASM: # CallingConvention: NearC (0x0)
525 ; ASM: # FunctionOptions [ (0x0)
526 ; ASM: # ]
527 ; ASM: # NumParameters: 0
528 ; ASM: # ArgListType: () (0x1008)
529 ; ASM: # ThisAdjustment: 0
530 ; ASM: # }
531426 ; ASM: # FieldList (0x100A)
532427 ; ASM: .short 0x1e # Record length
533428 ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST
543438 ; ASM: .byte 243
544439 ; ASM: .byte 242
545440 ; ASM: .byte 241
546 ; ASM: # FieldList (0x100A) {
547 ; ASM: # TypeLeafKind: LF_FIELDLIST (0x1203)
548 ; ASM: # DataMember {
549 ; ASM: # TypeLeafKind: LF_MEMBER (0x150D)
550 ; ASM: # AccessSpecifier: Public (0x3)
551 ; ASM: # Type: int (0x74)
552 ; ASM: # FieldOffset: 0x0
553 ; ASM: # Name: a
554 ; ASM: # }
555 ; ASM: # OneMethod {
556 ; ASM: # TypeLeafKind: LF_ONEMETHOD (0x1511)
557 ; ASM: # AccessSpecifier: Public (0x3)
558 ; ASM: # Type: void A::() (0x1009)
559 ; ASM: # Name: A::f
560 ; ASM: # }
561 ; ASM: # }
562441 ; ASM: # Struct (0x100B)
563442 ; ASM: .short 0x16 # Record length
564443 ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE
569448 ; ASM: .long 0x0 # VShape
570449 ; ASM: .short 0x4 # SizeOf
571450 ; ASM: .asciz "A" # Name
572 ; ASM: # Struct (0x100B) {
573 ; ASM: # TypeLeafKind: LF_STRUCTURE (0x1505)
574 ; ASM: # MemberCount: 2
575 ; ASM: # Properties [ (0x0)
576 ; ASM: # ]
577 ; ASM: # FieldList: (0x100A)
578 ; ASM: # DerivedFrom: 0x0
579 ; ASM: # VShape: 0x0
580 ; ASM: # SizeOf: 4
581 ; ASM: # Name: A
582 ; ASM: # }
583451 ; ASM: # StringId (0x100C)
584452 ; ASM: .short 0x1e # Record length
585453 ; ASM: .short 0x1605 # Record kind: LF_STRING_ID
586454 ; ASM: .long 0x0 # Id
587455 ; ASM: .asciz "D:\\src\\llvm\\build\\t.cpp" # StringData
588 ; ASM: # StringId (0x100C) {
589 ; ASM: # TypeLeafKind: LF_STRING_ID (0x1605)
590 ; ASM: # Id: 0x0
591 ; ASM: # StringData: D:\src\llvm\build\t.cpp
592 ; ASM: # }
593456 ; ASM: # UdtSourceLine (0x100D)
594457 ; ASM: .short 0xe # Record length
595458 ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE
596459 ; ASM: .long 0x100b # UDT: A
597460 ; ASM: .long 0x100c # SourceFile: D:\src\llvm\build\t.cpp
598461 ; ASM: .long 0x1 # LineNumber
599 ; ASM: # UdtSourceLine (0x100D) {
600 ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
601 ; ASM: # UDT: A (0x100B)
602 ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x100C)
603 ; ASM: # LineNumber: 1
604 ; ASM: # }
605462 ; ASM: # Pointer (0x100E)
606463 ; ASM: .short 0x12 # Record length
607464 ; ASM: .short 0x1002 # Record kind: LF_POINTER
611468 ; ASM: .short 0x8 # Representation: GeneralFunction
612469 ; ASM: .byte 242
613470 ; ASM: .byte 241
614 ; ASM: # Pointer (0x100E) {
615 ; ASM: # TypeLeafKind: LF_POINTER (0x1002)
616 ; ASM: # PointeeType: void A::() (0x1009)
617 ; ASM: # PtrType: Near64 (0xC)
618 ; ASM: # PtrMode: PointerToMemberFunction (0x3)
619 ; ASM: # IsFlat: 0
620 ; ASM: # IsConst: 0
621 ; ASM: # IsVolatile: 0
622 ; ASM: # IsUnaligned: 0
623 ; ASM: # IsRestrict: 0
624 ; ASM: # IsThisPtr&: 0
625 ; ASM: # IsThisPtr&&: 0
626 ; ASM: # SizeOf: 8
627 ; ASM: # ClassType: A (0x1005)
628 ; ASM: # Representation: GeneralFunction (0x8)
629 ; ASM: # }
630471 ; ASM: # Modifier (0x100F)
631472 ; ASM: .short 0xa # Record length
632473 ; ASM: .short 0x1001 # Record kind: LF_MODIFIER
634475 ; ASM: .short 0x1 # Modifiers ( Const (0x1) )
635476 ; ASM: .byte 242
636477 ; ASM: .byte 241
637 ; ASM: # Modifier (0x100F) {
638 ; ASM: # TypeLeafKind: LF_MODIFIER (0x1001)
639 ; ASM: # ModifiedType: void (0x3)
640 ; ASM: # Modifiers [ (0x1)
641 ; ASM: # Const (0x1)
642 ; ASM: # ]
643 ; ASM: # }
644478 ; ASM: # Pointer (0x1010)
645479 ; ASM: .short 0xa # Record length
646480 ; ASM: .short 0x1002 # Record kind: LF_POINTER
647481 ; ASM: .long 0x100f # PointeeType: const void
648482 ; ASM: .long 0x1000c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ]
649 ; ASM: # Pointer (0x1010) {
650 ; ASM: # TypeLeafKind: LF_POINTER (0x1002)
651 ; ASM: # PointeeType: const void (0x100F)
652 ; ASM: # PtrType: Near64 (0xC)
653 ; ASM: # PtrMode: Pointer (0x0)
654 ; ASM: # IsFlat: 0
655 ; ASM: # IsConst: 0
656 ; ASM: # IsVolatile: 0
657 ; ASM: # IsUnaligned: 0
658 ; ASM: # IsRestrict: 0
659 ; ASM: # IsThisPtr&: 0
660 ; ASM: # IsThisPtr&&: 0
661 ; ASM: # SizeOf: 8
662 ; ASM: # }
663483 ; ASM: # Procedure (0x1011)
664484 ; ASM: .short 0xe # Record length
665485 ; ASM: .short 0x1008 # Record kind: LF_PROCEDURE
668488 ; ASM: .byte 0x0 # FunctionOptions
669489 ; ASM: .short 0x0 # NumParameters
670490 ; ASM: .long 0x1008 # ArgListType: ()
671 ; ASM: # Procedure (0x1011) {
672 ; ASM: # TypeLeafKind: LF_PROCEDURE (0x1008)
673 ; ASM: # ReturnType: void (0x3)
674 ; ASM: # CallingConvention: NearC (0x0)
675 ; ASM: # FunctionOptions [ (0x0)
676 ; ASM: # ]
677 ; ASM: # NumParameters: 0
678 ; ASM: # ArgListType: () (0x1008)
679 ; ASM: # }
680491 ; ASM: # FuncId (0x1012)
681492 ; ASM: .short 0x16 # Record length
682493 ; ASM: .short 0x1601 # Record kind: LF_FUNC_ID
685496 ; ASM: .asciz "CharTypes" # Name
686497 ; ASM: .byte 242
687498 ; ASM: .byte 241
688 ; ASM: # FuncId (0x1012) {
689 ; ASM: # TypeLeafKind: LF_FUNC_ID (0x1601)
690 ; ASM: # ParentScope: 0x0
691 ; ASM: # FunctionType: void () (0x1011)
692 ; ASM: # Name: CharTypes
693 ; ASM: # }
694499 ; ASM: # StringId (0x1013)
695500 ; ASM: .short 0x1a # Record length
696501 ; ASM: .short 0x1605 # Record kind: LF_STRING_ID
698503 ; ASM: .asciz "D:\\src\\llvm\\build" # StringData
699504 ; ASM: .byte 242
700505 ; ASM: .byte 241
701 ; ASM: # StringId (0x1013) {
702 ; ASM: # TypeLeafKind: LF_STRING_ID (0x1605)
703 ; ASM: # Id: 0x0
704 ; ASM: # StringData: D:\src\llvm\build
705 ; ASM: # }
706506 ; ASM: # StringId (0x1014)
707507 ; ASM: .short 0xe # Record length
708508 ; ASM: .short 0x1605 # Record kind: LF_STRING_ID
710510 ; ASM: .asciz "t.cpp" # StringData
711511 ; ASM: .byte 242
712512 ; ASM: .byte 241
713 ; ASM: # StringId (0x1014) {
714 ; ASM: # TypeLeafKind: LF_STRING_ID (0x1605)
715 ; ASM: # Id: 0x0
716 ; ASM: # StringData: t.cpp
717 ; ASM: # }
718513 ; ASM: # BuildInfo (0x1015)
719514 ; ASM: .short 0x1a # Record length
720515 ; ASM: .short 0x1603 # Record kind: LF_BUILDINFO
726521 ; ASM: .long 0x0 # Argument
727522 ; ASM: .byte 242
728523 ; ASM: .byte 241
729 ; ASM: # BuildInfo (0x1015) {
730 ; ASM: # TypeLeafKind: LF_BUILDINFO (0x1603)
731 ; ASM: # NumArgs: 5
732 ; ASM: # Arguments [
733 ; ASM: # ArgType: D:\src\llvm\build (0x1013)
734 ; ASM: # ArgType: 0x0
735 ; ASM: # ArgType: t.cpp (0x1014)
736 ; ASM: # ArgType: 0x0
737 ; ASM: # ArgType: 0x0
738 ; ASM: # ]
739 ; ASM: # }
740524
741525 ; ModuleID = 't.cpp'
742526 source_filename = "t.cpp"
396396 ; ASM: .short 0x6 # Record length
397397 ; ASM: .short 0x1201 # Record kind: LF_ARGLIST
398398 ; ASM: .long 0x0 # NumArgs
399 ; ASM: # ArgList (0x1000) {
400 ; ASM: # TypeLeafKind: LF_ARGLIST (0x1201)
401 ; ASM: # NumArgs: 0
402 ; ASM: # Arguments [
403 ; ASM: # ]
404 ; ASM: # }
405399 ; ASM: # Procedure (0x1001)
406400 ; ASM: .short 0xe # Record length
407401 ; ASM: .short 0x1008 # Record kind: LF_PROCEDURE
410404 ; ASM: .byte 0x0 # FunctionOptions
411405 ; ASM: .short 0x0 # NumParameters
412406 ; ASM: .long 0x1000 # ArgListType: ()
413 ; ASM: # Procedure (0x1001) {
414 ; ASM: # TypeLeafKind: LF_PROCEDURE (0x1008)
415 ; ASM: # ReturnType: void (0x3)
416 ; ASM: # CallingConvention: NearC (0x0)
417 ; ASM: # FunctionOptions [ (0x0)
418 ; ASM: # ]
419 ; ASM: # NumParameters: 0
420 ; ASM: # ArgListType: () (0x1000)
421 ; ASM: # }
422407 ; ASM: # FuncId (0x1002)
423408 ; ASM: .short 0x16 # Record length
424409 ; ASM: .short 0x1601 # Record kind: LF_FUNC_ID
428413 ; ASM: .byte 243
429414 ; ASM: .byte 242
430415 ; ASM: .byte 241
431 ; ASM: # FuncId (0x1002) {
432 ; ASM: # TypeLeafKind: LF_FUNC_ID (0x1601)
433 ; ASM: # ParentScope: 0x0
434 ; ASM: # FunctionType: void () (0x1001)
435 ; ASM: # Name: UseTypes
436 ; ASM: # }
437416 ; ASM: # Struct (0x1003)
438417 ; ASM: .short 0x2a # Record length
439418 ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE
447426 ; ASM: .asciz ".?AUStruct@@" # LinkageName
448427 ; ASM: .byte 242
449428 ; ASM: .byte 241
450 ; ASM: # Struct (0x1003) {
451 ; ASM: # TypeLeafKind: LF_STRUCTURE (0x1505)
452 ; ASM: # MemberCount: 0
453 ; ASM: # Properties [ (0x280)
454 ; ASM: # ForwardReference (0x80)
455 ; ASM: # HasUniqueName (0x200)
456 ; ASM: # ]
457 ; ASM: # FieldList: 0x0
458 ; ASM: # DerivedFrom: 0x0
459 ; ASM: # VShape: 0x0
460 ; ASM: # SizeOf: 0
461 ; ASM: # Name: Struct
462 ; ASM: # LinkageName: .?AUStruct@@
463 ; ASM: # }
464429 ; ASM: # Modifier (0x1004)
465430 ; ASM: .short 0xa # Record length
466431 ; ASM: .short 0x1001 # Record kind: LF_MODIFIER
468433 ; ASM: .short 0x1 # Modifiers ( Const (0x1) )
469434 ; ASM: .byte 242
470435 ; ASM: .byte 241
471 ; ASM: # Modifier (0x1004) {
472 ; ASM: # TypeLeafKind: LF_MODIFIER (0x1001)
473 ; ASM: # ModifiedType: int (0x74)
474 ; ASM: # Modifiers [ (0x1)
475 ; ASM: # Const (0x1)
476 ; ASM: # ]
477 ; ASM: # }
478436 ; ASM: # FieldList (0x1005)
479437 ; ASM: .short 0x3e # Record length
480438 ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST
506464 ; ASM: .short 0x3 # Attrs: Public
507465 ; ASM: .long 0x1004 # Type: const int
508466 ; ASM: .asciz "sdm" # Name
509 ; ASM: # FieldList (0x1005) {
510 ; ASM: # TypeLeafKind: LF_FIELDLIST (0x1203)
511 ; ASM: # DataMember {
512 ; ASM: # TypeLeafKind: LF_MEMBER (0x150D)
513 ; ASM: # AccessSpecifier: Public (0x3)
514 ; ASM: # Type: int (0x74)
515 ; ASM: # FieldOffset: 0x0
516 ; ASM: # Name: s1
517 ; ASM: # }
518 ; ASM: # DataMember {
519 ; ASM: # TypeLeafKind: LF_MEMBER (0x150D)
520 ; ASM: # AccessSpecifier: Public (0x3)
521 ; ASM: # Type: int (0x74)
522 ; ASM: # FieldOffset: 0x4
523 ; ASM: # Name: s2
524 ; ASM: # }
525 ; ASM: # DataMember {
526 ; ASM: # TypeLeafKind: LF_MEMBER (0x150D)
527 ; ASM: # AccessSpecifier: Public (0x3)
528 ; ASM: # Type: int (0x74)
529 ; ASM: # FieldOffset: 0x8
530 ; ASM: # Name: s3
531 ; ASM: # }
532 ; ASM: # StaticDataMember {
533 ; ASM: # TypeLeafKind: LF_STMEMBER (0x150E)
534 ; ASM: # AccessSpecifier: Public (0x3)
535 ; ASM: # Type: const int (0x1004)
536 ; ASM: # Name: sdm
537 ; ASM: # }
538 ; ASM: # }
539467 ; ASM: # Struct (0x1006)
540468 ; ASM: .short 0x2a # Record length
541469 ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE
549477 ; ASM: .asciz ".?AUStruct@@" # LinkageName
550478 ; ASM: .byte 242
551479 ; ASM: .byte 241
552 ; ASM: # Struct (0x1006) {
553 ; ASM: # TypeLeafKind: LF_STRUCTURE (0x1505)
554 ; ASM: # MemberCount: 4
555 ; ASM: # Properties [ (0x200)
556 ; ASM: # HasUniqueName (0x200)
557 ; ASM: # ]
558 ; ASM: # FieldList: (0x1005)
559 ; ASM: # DerivedFrom: 0x0
560 ; ASM: # VShape: 0x0
561 ; ASM: # SizeOf: 12
562 ; ASM: # Name: Struct
563 ; ASM: # LinkageName: .?AUStruct@@
564 ; ASM: # }
565480 ; ASM: # StringId (0x1007)
566481 ; ASM: .short 0x1e # Record length
567482 ; ASM: .short 0x1605 # Record kind: LF_STRING_ID
568483 ; ASM: .long 0x0 # Id
569484 ; ASM: .asciz "D:\\src\\llvm\\build\\t.cpp" # StringData
570 ; ASM: # StringId (0x1007) {
571 ; ASM: # TypeLeafKind: LF_STRING_ID (0x1605)
572 ; ASM: # Id: 0x0
573 ; ASM: # StringData: D:\src\llvm\build\t.cpp
574 ; ASM: # }
575485 ; ASM: # UdtSourceLine (0x1008)
576486 ; ASM: .short 0xe # Record length
577487 ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE
578488 ; ASM: .long 0x1006 # UDT: Struct
579489 ; ASM: .long 0x1007 # SourceFile: D:\src\llvm\build\t.cpp
580490 ; ASM: .long 0x1 # LineNumber
581 ; ASM: # UdtSourceLine (0x1008) {
582 ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
583 ; ASM: # UDT: Struct (0x1006)
584 ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x1007)
585 ; ASM: # LineNumber: 1
586 ; ASM: # }
587491 ; ASM: # Union (0x1009)
588492 ; ASM: .short 0x1e # Record length
589493 ; ASM: .short 0x1506 # Record kind: LF_UNION
593497 ; ASM: .short 0x0 # SizeOf
594498 ; ASM: .asciz "Union" # Name
595499 ; ASM: .asciz ".?ATUnion@@" # LinkageName
596 ; ASM: # Union (0x1009) {
597 ; ASM: # TypeLeafKind: LF_UNION (0x1506)
598 ; ASM: # MemberCount: 0
599 ; ASM: # Properties [ (0x280)
600 ; ASM: # ForwardReference (0x80)
601 ; ASM: # HasUniqueName (0x200)
602 ; ASM: # ]
603 ; ASM: # FieldList: 0x0
604 ; ASM: # SizeOf: 0
605 ; ASM: # Name: Union
606 ; ASM: # LinkageName: .?ATUnion@@
607 ; ASM: # }
608500 ; ASM: # FieldList (0x100A)
609501 ; ASM: .short 0x1a # Record length
610502 ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST
618510 ; ASM: .long 0x40 # Type: float
619511 ; ASM: .short 0x0 # FieldOffset
620512 ; ASM: .asciz "b" # Name
621 ; ASM: # FieldList (0x100A) {
622 ; ASM: # TypeLeafKind: LF_FIELDLIST (0x1203)
623 ; ASM: # DataMember {
624 ; ASM: # TypeLeafKind: LF_MEMBER (0x150D)
625 ; ASM: # AccessSpecifier: Public (0x3)
626 ; ASM: # Type: int (0x74)
627 ; ASM: # FieldOffset: 0x0
628 ; ASM: # Name: a
629 ; ASM: # }
630 ; ASM: # DataMember {
631 ; ASM: # TypeLeafKind: LF_MEMBER (0x150D)
632 ; ASM: # AccessSpecifier: Public (0x3)
633 ; ASM: # Type: float (0x40)
634 ; ASM: # FieldOffset: 0x0
635 ; ASM: # Name: b
636 ; ASM: # }
637 ; ASM: # }
638513 ; ASM: # Union (0x100B)
639514 ; ASM: .short 0x1e # Record length
640515 ; ASM: .short 0x1506 # Record kind: LF_UNION
644519 ; ASM: .short 0x4 # SizeOf
645520 ; ASM: .asciz "Union" # Name
646521 ; ASM: .asciz ".?ATUnion@@" # LinkageName
647 ; ASM: # Union (0x100B) {
648 ; ASM: # TypeLeafKind: LF_UNION (0x1506)
649 ; ASM: # MemberCount: 2
650 ; ASM: # Properties [ (0x600)
651 ; ASM: # HasUniqueName (0x200)
652 ; ASM: # Sealed (0x400)
653 ; ASM: # ]
654 ; ASM: # FieldList: (0x100A)
655 ; ASM: # SizeOf: 4
656 ; ASM: # Name: Union
657 ; ASM: # LinkageName: .?ATUnion@@
658 ; ASM: # }
659522 ; ASM: # UdtSourceLine (0x100C)
660523 ; ASM: .short 0xe # Record length
661524 ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE
662525 ; ASM: .long 0x100b # UDT: Union
663526 ; ASM: .long 0x1007 # SourceFile: D:\src\llvm\build\t.cpp
664527 ; ASM: .long 0x7 # LineNumber
665 ; ASM: # UdtSourceLine (0x100C) {
666 ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
667 ; ASM: # UDT: Union (0x100B)
668 ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x1007)
669 ; ASM: # LineNumber: 7
670 ; ASM: # }
671528 ; ASM: # Class (0x100D)
672529 ; ASM: .short 0x26 # Record length
673530 ; ASM: .short 0x1504 # Record kind: LF_CLASS
679536 ; ASM: .short 0x0 # SizeOf
680537 ; ASM: .asciz "Class" # Name
681538 ; ASM: .asciz ".?AVClass@@" # LinkageName
682 ; ASM: # Class (0x100D) {
683 ; ASM: # TypeLeafKind: LF_CLASS (0x1504)
684 ; ASM: # MemberCount: 0
685 ; ASM: # Properties [ (0x280)
686 ; ASM: # ForwardReference (0x80)
687 ; ASM: # HasUniqueName (0x200)
688 ; ASM: # ]
689 ; ASM: # FieldList: 0x0
690 ; ASM: # DerivedFrom: 0x0
691 ; ASM: # VShape: 0x0
692 ; ASM: # SizeOf: 0
693 ; ASM: # Name: Class
694 ; ASM: # LinkageName: .?AVClass@@
695 ; ASM: # }
696539 ; ASM: # FieldList (0x100E)
697540 ; ASM: .short 0x32 # Record length
698541 ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST
715558 ; ASM: .short 0x8 # FieldOffset
716559 ; ASM: .asciz "prot" # Name
717560 ; ASM: .byte 241
718 ; ASM: # FieldList (0x100E) {
719 ; ASM: # TypeLeafKind: LF_FIELDLIST (0x1203)
720 ; ASM: # DataMember {
721 ; ASM: # TypeLeafKind: LF_MEMBER (0x150D)
722 ; ASM: # AccessSpecifier: Public (0x3)
723 ; ASM: # Type: int (0x74)
724 ; ASM: # FieldOffset: 0x0
725 ; ASM: # Name: pub
726 ; ASM: # }
727 ; ASM: # DataMember {
728 ; ASM: # TypeLeafKind: LF_MEMBER (0x150D)
729 ; ASM: # AccessSpecifier: Private (0x1)
730 ; ASM: # Type: int (0x74)
731 ; ASM: # FieldOffset: 0x4
732 ; ASM: # Name: priv
733 ; ASM: # }
734 ; ASM: # DataMember {
735 ; ASM: # TypeLeafKind: LF_MEMBER (0x150D)
736 ; ASM: # AccessSpecifier: Protected (0x2)
737 ; ASM: # Type: int (0x74)
738 ; ASM: # FieldOffset: 0x8
739 ; ASM: # Name: prot
740 ; ASM: # }
741 ; ASM: # }
742561 ; ASM: # Class (0x100F)
743562 ; ASM: .short 0x26 # Record length
744563 ; ASM: .short 0x1504 # Record kind: LF_CLASS
750569 ; ASM: .short 0xc # SizeOf
751570 ; ASM: .asciz "Class" # Name
752571 ; ASM: .asciz ".?AVClass@@" # LinkageName
753 ; ASM: # Class (0x100F) {
754 ; ASM: # TypeLeafKind: LF_CLASS (0x1504)
755 ; ASM: # MemberCount: 3
756 ; ASM: # Properties [ (0x200)
757 ; ASM: # HasUniqueName (0x200)
758 ; ASM: # ]
759 ; ASM: # FieldList: (0x100E)
760 ; ASM: # DerivedFrom: 0x0
761 ; ASM: # VShape: 0x0
762 ; ASM: # SizeOf: 12
763 ; ASM: # Name: Class
764 ; ASM: # LinkageName: .?AVClass@@
765 ; ASM: # }
766572 ; ASM: # UdtSourceLine (0x1010)
767573 ; ASM: .short 0xe # Record length
768574 ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE
769575 ; ASM: .long 0x100f # UDT: Class
770576 ; ASM: .long 0x1007 # SourceFile: D:\src\llvm\build\t.cpp
771577 ; ASM: .long 0xb # LineNumber
772 ; ASM: # UdtSourceLine (0x1010) {
773 ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
774 ; ASM: # UDT: Class (0x100F)
775 ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x1007)
776 ; ASM: # LineNumber: 11
777 ; ASM: # }
778578 ; ASM: # Struct (0x1011)
779579 ; ASM: .short 0x36 # Record length
780580 ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE
788588 ; ASM: .asciz ".?AUDerivedClass@@" # LinkageName
789589 ; ASM: .byte 242
790590 ; ASM: .byte 241
791 ; ASM: # Struct (0x1011) {
792 ; ASM: # TypeLeafKind: LF_STRUCTURE (0x1505)
793 ; ASM: # MemberCount: 0
794 ; ASM: # Properties [ (0x280)
795 ; ASM: # ForwardReference (0x80)
796 ; ASM: # HasUniqueName (0x200)
797 ; ASM: # ]
798 ; ASM: # FieldList: 0x0
799 ; ASM: # DerivedFrom: 0x0
800 ; ASM: # VShape: 0x0
801 ; ASM: # SizeOf: 0
802 ; ASM: # Name: DerivedClass
803 ; ASM: # LinkageName: .?AUDerivedClass@@
804 ; ASM: # }
805591 ; ASM: # Pointer (0x1012)
806592 ; ASM: .short 0xa # Record length
807593 ; ASM: .short 0x1002 # Record kind: LF_POINTER
808594 ; ASM: .long 0x1004 # PointeeType: const int
809595 ; ASM: .long 0x1000c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ]
810 ; ASM: # Pointer (0x1012) {
811 ; ASM: # TypeLeafKind: LF_POINTER (0x1002)
812 ; ASM: # PointeeType: const int (0x1004)
813 ; ASM: # PtrType: Near64 (0xC)
814 ; ASM: # PtrMode: Pointer (0x0)
815 ; ASM: # IsFlat: 0
816 ; ASM: # IsConst: 0
817 ; ASM: # IsVolatile: 0
818 ; ASM: # IsUnaligned: 0
819 ; ASM: # IsRestrict: 0
820 ; ASM: # IsThisPtr&: 0
821 ; ASM: # IsThisPtr&&: 0
822 ; ASM: # SizeOf: 8
823 ; ASM: # }
824596 ; ASM: # VFTableShape (0x1013)
825597 ; ASM: .short 0x6 # Record length
826598 ; ASM: .short 0xa # Record kind: LF_VTSHAPE
827599 ; ASM: .short 0x1 # VFEntryCount
828600 ; ASM: .byte 0x0
829601 ; ASM: .byte 241
830 ; ASM: # VFTableShape (0x1013) {
831 ; ASM: # TypeLeafKind: LF_VTSHAPE (0xA)
832 ; ASM: # VFEntryCount: 1
833 ; ASM: # }
834602 ; ASM: # Pointer (0x1014)
835603 ; ASM: .short 0xa # Record length
836604 ; ASM: .short 0x1002 # Record kind: LF_POINTER
837605 ; ASM: .long 0x1013 # PointeeType:
838606 ; ASM: .long 0x1000c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ]
839 ; ASM: # Pointer (0x1014) {
840 ; ASM: # TypeLeafKind: LF_POINTER (0x1002)
841 ; ASM: # PointeeType: (0x1013)
842 ; ASM: # PtrType: Near64 (0xC)
843 ; ASM: # PtrMode: Pointer (0x0)
844 ; ASM: # IsFlat: 0
845 ; ASM: # IsConst: 0
846 ; ASM: # IsVolatile: 0
847 ; ASM: # IsUnaligned: 0
848 ; ASM: # IsRestrict: 0
849 ; ASM: # IsThisPtr&: 0
850 ; ASM: # IsThisPtr&&: 0
851 ; ASM: # SizeOf: 8
852 ; ASM: # }
853607 ; ASM: # FieldList (0x1015)
854608 ; ASM: .short 0x32 # Record length
855609 ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST
873627 ; ASM: .long 0x74 # Type: int
874628 ; ASM: .short 0x18 # FieldOffset
875629 ; ASM: .asciz "d" # Name
876 ; ASM: # FieldList (0x1015) {
877 ; ASM: # TypeLeafKind: LF_FIELDLIST (0x1203)
878 ; ASM: # BaseClass {
879 ; ASM: # TypeLeafKind: LF_BCLASS (0x1400)
880 ; ASM: # AccessSpecifier: Public (0x3)
881 ; ASM: # BaseType: Struct (0x1003)
882 ; ASM: # BaseOffset: 0x0
883 ; ASM: # }
884 ; ASM: # VirtualBaseClass {
885 ; ASM: # TypeLeafKind: LF_VBCLASS (0x1401)
886 ; ASM: # AccessSpecifier: Public (0x3)
887 ; ASM: # BaseType: Class (0x100D)
888 ; ASM: # VBPtrType: const int* (0x1012)
889 ; ASM: # VBPtrOffset: 0x0
890 ; ASM: # VBTableIndex: 0x1
891 ; ASM: # }
892 ; ASM: # VFPtr {
893 ; ASM: # TypeLeafKind: LF_VFUNCTAB (0x1409)
894 ; ASM: # Type: * (0x1014)
895 ; ASM: # }
896 ; ASM: # DataMember {
897 ; ASM: # TypeLeafKind: LF_MEMBER (0x150D)
898 ; ASM: # AccessSpecifier: Public (0x3)
899 ; ASM: # Type: int (0x74)
900 ; ASM: # FieldOffset: 0x18
901 ; ASM: # Name: d
902 ; ASM: # }
903 ; ASM: # }
904630 ; ASM: # Struct (0x1016)
905631 ; ASM: .short 0x36 # Record length
906632 ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE
914640 ; ASM: .asciz ".?AUDerivedClass@@" # LinkageName
915641 ; ASM: .byte 242
916642 ; ASM: .byte 241
917 ; ASM: # Struct (0x1016) {
918 ; ASM: # TypeLeafKind: LF_STRUCTURE (0x1505)
919 ; ASM: # MemberCount: 4
920 ; ASM: # Properties [ (0x200)
921 ; ASM: # HasUniqueName (0x200)
922 ; ASM: # ]
923 ; ASM: # FieldList: (0x1015)
924 ; ASM: # DerivedFrom: 0x0
925 ; ASM: # VShape: 0x0
926 ; ASM: # SizeOf: 48
927 ; ASM: # Name: DerivedClass
928 ; ASM: # LinkageName: .?AUDerivedClass@@
929 ; ASM: # }
930643 ; ASM: # UdtSourceLine (0x1017)
931644 ; ASM: .short 0xe # Record length
932645 ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE
933646 ; ASM: .long 0x1016 # UDT: DerivedClass
934647 ; ASM: .long 0x1007 # SourceFile: D:\src\llvm\build\t.cpp
935648 ; ASM: .long 0x14 # LineNumber
936 ; ASM: # UdtSourceLine (0x1017) {
937 ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
938 ; ASM: # UDT: DerivedClass (0x1016)
939 ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x1007)
940 ; ASM: # LineNumber: 20
941 ; ASM: # }
942649 ; ASM: # Struct (0x1018)
943650 ; ASM: .short 0x36 # Record length
944651 ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE
951658 ; ASM: .asciz "Class::Nested" # Name
952659 ; ASM: .asciz ".?AUNested@Class@@" # LinkageName
953660 ; ASM: .byte 241
954 ; ASM: # Struct (0x1018) {
955 ; ASM: # TypeLeafKind: LF_STRUCTURE (0x1505)
956 ; ASM: # MemberCount: 0
957 ; ASM: # Properties [ (0x288)
958 ; ASM: # ForwardReference (0x80)
959 ; ASM: # HasUniqueName (0x200)
960 ; ASM: # Nested (0x8)
961 ; ASM: # ]
962 ; ASM: # FieldList: 0x0
963 ; ASM: # DerivedFrom: 0x0
964 ; ASM: # VShape: 0x0
965 ; ASM: # SizeOf: 0
966 ; ASM: # Name: Class::Nested
967 ; ASM: # LinkageName: .?AUNested@Class@@
968 ; ASM: # }
969661 ; ASM: # FieldList (0x1019)
970662 ; ASM: .short 0xe # Record length
971663 ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST
974666 ; ASM: .long 0x74 # Type: int
975667 ; ASM: .short 0x0 # FieldOffset
976668 ; ASM: .asciz "n" # Name
977 ; ASM: # FieldList (0x1019) {
978 ; ASM: # TypeLeafKind: LF_FIELDLIST (0x1203)
979 ; ASM: # DataMember {
980 ; ASM: # TypeLeafKind: LF_MEMBER (0x150D)
981 ; ASM: # AccessSpecifier: Public (0x3)
982 ; ASM: # Type: int (0x74)
983 ; ASM: # FieldOffset: 0x0
984 ; ASM: # Name: n
985 ; ASM: # }
986 ; ASM: # }
987669 ; ASM: # Struct (0x101A)
988670 ; ASM: .short 0x36 # Record length
989671 ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE
996678 ; ASM: .asciz "Class::Nested" # Name
997679 ; ASM: .asciz ".?AUNested@Class@@" # LinkageName
998680 ; ASM: .byte 241
999 ; ASM: # Struct (0x101A) {
1000 ; ASM: # TypeLeafKind: LF_STRUCTURE (0x1505)
1001 ; ASM: # MemberCount: 1
1002 ; ASM: # Properties [ (0x208)
1003 ; ASM: # HasUniqueName (0x200)
1004 ; ASM: # Nested (0x8)
1005 ; ASM: # ]
1006 ; ASM: # FieldList: (0x1019)
1007 ; ASM: # DerivedFrom: 0x0
1008 ; ASM: # VShape: 0x0
1009 ; ASM: # SizeOf: 4
1010 ; ASM: # Name: Class::Nested
1011 ; ASM: # LinkageName: .?AUNested@Class@@
1012 ; ASM: # }
1013681 ; ASM: # UdtSourceLine (0x101B)
1014682 ; ASM: .short 0xe # Record length
1015683 ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE
1016684 ; ASM: .long 0x101a # UDT: Class::Nested
1017685 ; ASM: .long 0x1007 # SourceFile: D:\src\llvm\build\t.cpp
1018686 ; ASM: .long 0x17 # LineNumber
1019 ; ASM: # UdtSourceLine (0x101B) {
1020 ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
1021 ; ASM: # UDT: Class::Nested (0x101A)
1022 ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x1007)
1023 ; ASM: # LineNumber: 23
1024 ; ASM: # }
1025687 ; ASM: # Pointer (0x101C)
1026688 ; ASM: .short 0xa # Record length
1027689 ; ASM: .short 0x1002 # Record kind: LF_POINTER
1028690 ; ASM: .long 0x1011 # PointeeType: DerivedClass
1029691 ; ASM: .long 0x1040c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8, isConst ]
1030 ; ASM: # Pointer (0x101C) {
1031 ; ASM: # TypeLeafKind: LF_POINTER (0x1002)
1032 ; ASM: # PointeeType: DerivedClass (0x1011)
1033 ; ASM: # PtrType: Near64 (0xC)
1034 ; ASM: # PtrMode: Pointer (0x0)
1035 ; ASM: # IsFlat: 0
1036 ; ASM: # IsConst: 1
1037 ; ASM: # IsVolatile: 0
1038 ; ASM: # IsUnaligned: 0
1039 ; ASM: # IsRestrict: 0
1040 ; ASM: # IsThisPtr&: 0
1041 ; ASM: # IsThisPtr&&: 0
1042 ; ASM: # SizeOf: 8
1043 ; ASM: # }
1044692 ; ASM: # MemberFunction (0x101D)
1045693 ; ASM: .short 0x1a # Record length
1046694 ; ASM: .short 0x1009 # Record kind: LF_MFUNCTION
1052700 ; ASM: .short 0x0 # NumParameters
1053701 ; ASM: .long 0x1000 # ArgListType: ()
1054702 ; ASM: .long 0x0 # ThisAdjustment
1055 ; ASM: # MemberFunction (0x101D) {
1056 ; ASM: # TypeLeafKind: LF_MFUNCTION (0x1009)
1057 ; ASM: # ReturnType: void (0x3)
1058 ; ASM: # ClassType: DerivedClass (0x1011)
1059 ; ASM: # ThisType: DerivedClass* const (0x101C)
1060 ; ASM: # CallingConvention: NearC (0x0)
1061 ; ASM: # FunctionOptions [ (0x0)
1062 ; ASM: # ]
1063 ; ASM: # NumParameters: 0
1064 ; ASM: # ArgListType: () (0x1000)
1065 ; ASM: # ThisAdjustment: 0
1066 ; ASM: # }
1067703 ; ASM: # MemberFuncId (0x101E)
1068704 ; ASM: .short 0x26 # Record length
1069705 ; ASM: .short 0x1602 # Record kind: LF_MFUNC_ID
1071707 ; ASM: .long 0x101d # FunctionType: void DerivedClass::()
1072708 ; ASM: .asciz "DerivedClass::DerivedClass" # Name
1073709 ; ASM: .byte 241
1074 ; ASM: # MemberFuncId (0x101E) {
1075 ; ASM: # TypeLeafKind: LF_MFUNC_ID (0x1602)
1076 ; ASM: # ClassType: DerivedClass (0x1011)
1077 ; ASM: # FunctionType: void DerivedClass::() (0x101D)
1078 ; ASM: # Name: DerivedClass::DerivedClass
1079 ; ASM: # }
1080710 ; ASM: # Pointer (0x101F)
1081711 ; ASM: .short 0xa # Record length
1082712 ; ASM: .short 0x1002 # Record kind: LF_POINTER
1083713 ; ASM: .long 0x1011 # PointeeType: DerivedClass
1084714 ; ASM: .long 0x1000c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ]
1085 ; ASM: # Pointer (0x101F) {
1086 ; ASM: # TypeLeafKind: LF_POINTER (0x1002)
1087 ; ASM: # PointeeType: DerivedClass (0x1011)
1088 ; ASM: # PtrType: Near64 (0xC)
1089 ; ASM: # PtrMode: Pointer (0x0)
1090 ; ASM: # IsFlat: 0
1091 ; ASM: # IsConst: 0
1092 ; ASM: # IsVolatile: 0
1093 ; ASM: # IsUnaligned: 0
1094 ; ASM: # IsRestrict: 0
1095 ; ASM: # IsThisPtr&: 0
1096 ; ASM: # IsThisPtr&&: 0
1097 ; ASM: # SizeOf: 8
1098 ; ASM: # }
1099715 ; ASM: # StringId (0x1020)
1100716 ; ASM: .short 0x1a # Record length
1101717 ; ASM: .short 0x1605 # Record kind: LF_STRING_ID
1103719 ; ASM: .asciz "D:\\src\\llvm\\build" # StringData
1104720 ; ASM: .byte 242
1105721 ; ASM: .byte 241
1106 ; ASM: # StringId (0x1020) {
1107 ; ASM: # TypeLeafKind: LF_STRING_ID (0x1605)
1108 ; ASM: # Id: 0x0
1109 ; ASM: # StringData: D:\src\llvm\build
1110 ; ASM: # }
1111722 ; ASM: # StringId (0x1021)
1112723 ; ASM: .short 0xe # Record length
1113724 ; ASM: .short 0x1605 # Record kind: LF_STRING_ID
1115726 ; ASM: .asciz "t.cpp" # StringData
1116727 ; ASM: .byte 242
1117728 ; ASM: .byte 241
1118 ; ASM: # StringId (0x1021) {
1119 ; ASM: # TypeLeafKind: LF_STRING_ID (0x1605)
1120 ; ASM: # Id: 0x0
1121 ; ASM: # StringData: t.cpp
1122 ; ASM: # }
1123729 ; ASM: # BuildInfo (0x1022)
1124730 ; ASM: .short 0x1a # Record length
1125731 ; ASM: .short 0x1603 # Record kind: LF_BUILDINFO
1131737 ; ASM: .long 0x0 # Argument
1132738 ; ASM: .byte 242
1133739 ; ASM: .byte 241
1134 ; ASM: # BuildInfo (0x1022) {
1135 ; ASM: # TypeLeafKind: LF_BUILDINFO (0x1603)
1136 ; ASM: # NumArgs: 5
1137 ; ASM: # Arguments [
1138 ; ASM: # ArgType: D:\src\llvm\build (0x1020)
1139 ; ASM: # ArgType: 0x0
1140 ; ASM: # ArgType: t.cpp (0x1021)
1141 ; ASM: # ArgType: 0x0
1142 ; ASM: # ArgType: 0x0
1143 ; ASM: # ]
1144 ; ASM: # }
1145740
1146741 ; ModuleID = 't.cpp'
1147742 source_filename = "t.cpp"