]> granicus.if.org Git - llvm/commitdiff
Removing block comments from CodeView records in assembly files & related code cleanup
authorNilanjana Basu <nilanjana.basu87@gmail.com>
Sun, 25 Aug 2019 01:09:11 +0000 (01:09 +0000)
committerNilanjana Basu <nilanjana.basu87@gmail.com>
Sun, 25 Aug 2019 01:09:11 +0000 (01:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369860 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
lib/DebugInfo/CodeView/CVTypeVisitor.cpp
test/DebugInfo/COFF/array-odr-violation.ll
test/DebugInfo/COFF/class-options-common.ll
test/DebugInfo/COFF/inlining.ll
test/DebugInfo/COFF/pr37492.ll
test/DebugInfo/COFF/synthetic.ll
test/DebugInfo/COFF/types-basic.ll
test/DebugInfo/COFF/types-data-members.ll

index 7d20bb0a7bde3770832c9962ad86232ad0d25e60..7538cb2c254800eb3a61cb8b324e76033944d812 100644 (file)
@@ -11,7 +11,6 @@
 
 #include "llvm/DebugInfo/CodeView/CVRecord.h"
 #include "llvm/DebugInfo/CodeView/TypeRecord.h"
-#include "llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h"
 #include "llvm/Support/Error.h"
 
 namespace llvm {
@@ -31,9 +30,6 @@ enum VisitorDataSource {
 Error visitTypeRecord(CVType &Record, TypeIndex Index,
                       TypeVisitorCallbacks &Callbacks,
                       VisitorDataSource Source = VDS_BytesPresent);
-Error visitTypeRecord(CVType &Record, TypeIndex Index,
-                      TypeVisitorCallbackPipeline &Callbacks,
-                      VisitorDataSource Source = VDS_BytesPresent);
 Error visitTypeRecord(CVType &Record, TypeVisitorCallbacks &Callbacks,
                       VisitorDataSource Source = VDS_BytesPresent);
 
index 169715be2d52f0d995d4c0d9b6455b49081dc6b2..fb0b579d6a06b70b5b752153b998c74b3472cc6b 100644 (file)
@@ -82,11 +82,6 @@ public:
     Pipeline.push_back(&Callbacks);
   }
 
-  void addCallbackToPipelineFront(TypeVisitorCallbacks &Callbacks) {
-    auto CallBackItr = Pipeline.begin();
-    Pipeline.insert(CallBackItr, &Callbacks);
-  }
-
 #define TYPE_RECORD(EnumName, EnumVal, Name)                                   \
   Error visitKnownRecord(CVType &CVR, Name##Record &Record) override {         \
     return visitKnownRecordImpl(CVR, Record);                                  \
index d4b8db088e067ee3ae0629e4a432e9d37e036c52..616b1368a7a75fdba830fe306892c69e1527163e 100644 (file)
@@ -642,27 +642,8 @@ void CodeViewDebug::emitTypeInformation() {
   OS.SwitchSection(Asm->getObjFileLowering().getCOFFDebugTypesSection());
   emitCodeViewMagicVersion();
 
-  SmallString<8> CommentPrefix;
-  if (OS.isVerboseAsm()) {
-    CommentPrefix += '\t';
-    CommentPrefix += Asm->MAI->getCommentString();
-    CommentPrefix += ' ';
-  }
-
   TypeTableCollection Table(TypeTable.records());
   TypeVisitorCallbackPipeline Pipeline;
-  SmallString<512> CommentBlock;
-  raw_svector_ostream CommentOS(CommentBlock);
-  std::unique_ptr<ScopedPrinter> SP;
-  std::unique_ptr<TypeDumpVisitor> TDV;
-
-  if (OS.isVerboseAsm()) {
-    // To construct block comment describing the type record for readability.
-    SP = std::make_unique<ScopedPrinter>(CommentOS);
-    SP->setPrefix(CommentPrefix);
-    TDV = std::make_unique<TypeDumpVisitor>(Table, SP.get(), false);
-    Pipeline.addCallbackToPipeline(*TDV);
-  }
 
   // To emit type record using Codeview MCStreamer adapter
   CVMCAdapter CVMCOS(OS, Table);
@@ -674,7 +655,6 @@ void CodeViewDebug::emitTypeInformation() {
     // This will fail if the record data is invalid.
     CVType Record = Table.getType(*B);
 
-    CommentBlock.clear();
     Error E = codeview::visitTypeRecord(Record, *B, Pipeline);
 
     if (E) {
@@ -682,13 +662,6 @@ void CodeViewDebug::emitTypeInformation() {
       llvm_unreachable("produced malformed type record");
     }
 
-    if (OS.isVerboseAsm()) {
-      // emitRawComment will insert its own tab and comment string before
-      // the first line, so strip off our first one. It also prints its own
-      // newline.
-      OS.emitRawComment(
-          CommentOS.str().drop_front(CommentPrefix.size() - 1).rtrim());
-    }
     B = Table.getNext(*B);
   }
 }
index ec4773d571c88b5d75f540ee3e0a507600eb413c..dd6f75f97a4ac7433e6a08bd257a52af2437d8a9 100644 (file)
@@ -209,14 +209,6 @@ struct VisitHelper {
     }
   }
 
-  VisitHelper(TypeVisitorCallbackPipeline &Callbacks, VisitorDataSource Source)
-      : Visitor((Source == VDS_BytesPresent) ? Pipeline : Callbacks) {
-    if (Source == VDS_BytesPresent) {
-      Pipeline = Callbacks;
-      Pipeline.addCallbackToPipelineFront(Deserializer);
-    }
-  }
-
   TypeDeserializer Deserializer;
   TypeVisitorCallbackPipeline Pipeline;
   CVTypeVisitor Visitor;
@@ -230,13 +222,6 @@ Error llvm::codeview::visitTypeRecord(CVType &Record, TypeIndex Index,
   return V.Visitor.visitTypeRecord(Record, Index);
 }
 
-Error llvm::codeview::visitTypeRecord(CVType &Record, TypeIndex Index,
-                                      TypeVisitorCallbackPipeline &Callbacks,
-                                      VisitorDataSource Source) {
-  VisitHelper V(Callbacks, Source);
-  return V.Visitor.visitTypeRecord(Record, Index);
-}
-
 Error llvm::codeview::visitTypeRecord(CVType &Record,
                                       TypeVisitorCallbacks &Callbacks,
                                       VisitorDataSource Source) {
index ec83a45190f277d572f655624608a887609dd9b9..0144059df8d5b3ae549434df768e93995fd61ed8 100644 (file)
 ; FIXME: sizeof(a) in the user program is 1, but we claim it is 4 because
 ; sometimes the frontend lies to us. See array-types-advanced.ll for an example.
 ;
-; CHECK: Array ({{.*}}) {
-; CHECK:   TypeLeafKind: LF_ARRAY (0x1503)
-; CHECK:   ElementType: YYSTYPE ({{.*}})
-; CHECK:   IndexType: unsigned __int64 (0x23)
-; CHECK:   SizeOf: 4
-; CHECK:   Name:
-; CHECK: }
+; CHECK:       # Array (0x1004)
+; CHECK:       .short  0xe                     # Record length
+; CHECK:       .short  0x1503                  # Record kind: LF_ARRAY
+; CHECK:       .long   0x1003                  # ElementType: YYSTYPE
+; CHECK:       .long   0x23                    # IndexType: unsigned __int64
+; CHECK:       .short  0x4                     # SizeOf
+; CHECK:       .byte   0                       # Name
+; CHECK:       .byte   241
 
-; sizeof(YYSTYPE) == 4
-; CHECK: Union ({{.*}}) {
-; CHECK:   TypeLeafKind: LF_UNION (0x1506)
-; CHECK:   MemberCount: 1
-; CHECK:   Properties [ (0x600)
-; CHECK:     HasUniqueName (0x200)
-; CHECK:     Sealed (0x400)
-; CHECK:   ]
-; CHECK:   FieldList: <field list>
-; CHECK:   SizeOf: 4
-; CHECK:   Name: YYSTYPE
-; CHECK:   LinkageName: .?ATYYSTYPE@@
-; CHECK: }
+; CHECK:       # Union (0x1006)
+; CHECK:       .short  0x22                    # Record length
+; CHECK:       .short  0x1506                  # Record kind: LF_UNION
+; CHECK:       .short  0x1                     # MemberCount
+; CHECK:       .short  0x600                   # Properties ( HasUniqueName (0x200) | Sealed (0x400) )
+; CHECK:       .long   0x1005                  # FieldList: <field list>
+; CHECK:       .short  0x4                     # SizeOf
+; CHECK:       .asciz  "YYSTYPE"               # Name
+; CHECK:       .asciz  ".?ATYYSTYPE@@"         # LinkageName
 
 ; ModuleID = 'llvm-link'
 source_filename = "llvm-link"
index 0134d38002d371c973a60d42f6cb4a93a24efcd4..05251d4ba954131dd330c04e47514295da926fc8 100644 (file)
 ; ASM-INLINE-COMMENTS: .short  0x3                     # Attrs: Public
 ; ASM-INLINE-COMMENTS: .short  0x0
 ; ASM-INLINE-COMMENTS: .long   0x1087                  # Type: void Foo::(const Foo&)
-; ASM-INLINE-COMMENTS: # MethodOverloadList (0x1088) {
-; ASM-INLINE-COMMENTS: #   TypeLeafKind: LF_METHODLIST (0x1206)
-; ASM-INLINE-COMMENTS: #   Method [
-; ASM-INLINE-COMMENTS: #     AccessSpecifier: Public (0x3)
-; ASM-INLINE-COMMENTS: #     Type: void Foo::() (0x1083)
-; ASM-INLINE-COMMENTS: #   ]
-; ASM-INLINE-COMMENTS: #   Method [
-; ASM-INLINE-COMMENTS: #     AccessSpecifier: Public (0x3)
-; ASM-INLINE-COMMENTS: #     Type: void Foo::(const Foo&) (0x1087)
-; ASM-INLINE-COMMENTS: #   ]
-; ASM-INLINE-COMMENTS: # }
 
 
 ; ModuleID = 'class-options-common.cpp'
index 981ae5aad8ef968193582f60febf44f39d9a8461..1306f6510f2cc101873a7b943f426ea5c6bb95ca 100644 (file)
 
 ; ASM: .section .debug$T,"dr"
 ; ASM: .long 4 # Debug section magic
-; ASM: # ArgList (0x1000) {
-; ASM: #   TypeLeafKind: LF_ARGLIST (0x1201)
-; ASM: #   NumArgs: 0
-; ASM: #   Arguments [
-; ASM: #   ]
-; ASM: # }
-; ASM: # Procedure (0x1001) {
-; ASM: #   TypeLeafKind: LF_PROCEDURE (0x1008)
-; ASM: #   ReturnType: void (0x3)
-; ASM: #   CallingConvention: NearC (0x0)
-; ASM: #   FunctionOptions [ (0x0)
-; ASM: #   ]
-; ASM: #   NumParameters: 0
-; ASM: #   ArgListType: () (0x1000)
-; ASM: # }
-; ASM: # FuncId (0x1002) {
-; ASM: #   TypeLeafKind: LF_FUNC_ID (0x1601)
-; ASM: #   ParentScope: 0x0
-; ASM: #   FunctionType: void () (0x1001)
-; ASM: #   Name: bar
-; ASM: # }
-; ASM: # FuncId (0x1003) {
-; ASM: #   TypeLeafKind: LF_FUNC_ID (0x1601)
-; ASM: #   ParentScope: 0x0
-; ASM: #   FunctionType: void () (0x1001)
-; ASM: #   Name: foo
-; ASM: # }
+; ASM: # ArgList (0x1000)
+; ASM: .short  0x6                     # Record length
+; ASM: .short  0x1201                  # Record kind: LF_ARGLIST
+; ASM: .long   0x0                     # NumArgs
+; ASM: # Procedure (0x1001)
+; ASM: .short  0xe                     # Record length
+; ASM: .short  0x1008                  # Record kind: LF_PROCEDURE
+; ASM: .long   0x3                     # ReturnType: void
+; ASM: .byte   0x0                     # CallingConvention: NearC
+; ASM: .byte   0x0                     # FunctionOptions
+; ASM: .short  0x0                     # NumParameters
+; ASM: .long   0x1000                  # ArgListType: ()
+; ASM: # FuncId (0x1002)
+; ASM: .short  0xe                     # Record length
+; ASM: .short  0x1601                  # Record kind: LF_FUNC_ID
+; ASM: .long   0x0                     # ParentScope
+; ASM: .long   0x1001                  # FunctionType: void ()
+; ASM: .asciz  "bar"                   # Name
+; ASM: # FuncId (0x1003)
+; ASM: .short  0xe                     # Record length
+; ASM: .short  0x1601                  # Record kind: LF_FUNC_ID
+; ASM: .long   0x0                     # ParentScope
+; ASM: .long   0x1001                  # FunctionType: void ()
+; ASM: .asciz  "foo"                   # Name
 
 ; We should only the LF_FUNC_ID records that we needed to reference.
 ; OBJ: CodeViewTypes [
index 7edff440b6774611246b0fbe2d4a3d4dff6ae670..bdf0bc77d1cea47004440cc64772a36625c97571 100644 (file)
 ; collision between this LF_BITFIELD and LF_MODIFIER record, so we only emitted
 ; one under the assumption that the other was redundant. Check that we emit both.
 
-; CHECK-LABEL: # BitField ({{.*}}) {
-; CHECK-NEXT: #   TypeLeafKind: LF_BITFIELD (0x1205)
-; CHECK-NEXT: #   Type: unsigned char (0x20)
-; CHECK-NEXT: #   BitSize: 1
-; CHECK-NEXT: #   BitOffset: 0
-; CHECK-NEXT: # }
-
-; CHECK-LABEL: # Modifier ({{.*}}) {
-; CHECK-NEXT: #   TypeLeafKind: LF_MODIFIER (0x1001)
-; CHECK-NEXT: #   ModifiedType: unsigned char (0x20)
-; CHECK-NEXT: #   Modifiers [ (0x1)
-; CHECK-NEXT: #     Const (0x1)
-; CHECK-NEXT: #   ]
-; CHECK-NEXT: # }
+; CHECK-LABEL: # BitField (0x1001)
+; CHECK-NEXT: .short   0xa                     # Record length
+; CHECK-NEXT: .short   0x1205                  # Record kind: LF_BITFIELD
+; CHECK-NEXT: .long    0x20                    # Type: unsigned char
+; CHECK-NEXT: .byte    0x1                     # BitSize
+; CHECK-NEXT: .byte    0x0                     # BitOffset
+; CHECK-NEXT: .byte    242
+; CHECK-NEXT: .byte    241
+
+; CHECK-LABEL: # Modifier (0x1007)
+; CHECK-NEXT: .short   0xa                     # Record length
+; CHECK-NEXT: .short   0x1001                  # Record kind: LF_MODIFIER
+; CHECK-NEXT: .long    0x20                    # ModifiedType: unsigned char
+; CHECK-NEXT: .short   0x1                     # Modifiers ( Const (0x1) )
+; CHECK-NEXT: .byte    242
+; CHECK-NEXT: .byte    241
 
 ; ModuleID = 't.cpp'
 source_filename = "t.cpp"
index aed6c33d519251f7388cda583d4ab4a18398fe45..246244e6b5308c60b40764a4dd4596f159615714 100644 (file)
@@ -40,16 +40,16 @@ entry:
 !27 = !DIDerivedType(tag: DW_TAG_member, name: "Size", scope: !1, file: !1, baseType: !26, size: 32, offset: 32)
 !28 = !DILocation(line: 1, scope: !6)
 
-; CHECK: # Struct
-; CHECK: #   TypeLeafKind: LF_STRUCTURE
-; CHECK: #   MemberCount: 0
-; CHECK: #   Properties [
-; CHECK: #     ForwardReference
-; CHECK: #   ]
-; CHECK: #   FieldList: 0x0
-; CHECK: #   DerivedFrom: 0x0
-; CHECK: #   VShape: 0x0
-; CHECK: #   SizeOf: 0
-; CHECK: #   Name: __block_descriptor
-; CHECK: # }
-
+; CHECK: # Struct (0x1003)
+; CHECK: .short        0x2a                    # Record length
+; CHECK: .short        0x1505                  # Record kind: LF_STRUCTURE
+; CHECK: .short        0x0                     # MemberCount
+; CHECK: .short        0x80                    # Properties ( ForwardReference (0x80) )
+; CHECK: .long 0x0                     # FieldList
+; CHECK: .long 0x0                     # DerivedFrom
+; CHECK: .long 0x0                     # VShape
+; CHECK: .short        0x0                     # SizeOf
+; CHECK: .asciz        "__block_descriptor"    # Name
+; CHECK: .byte 243
+; CHECK: .byte 242
+; CHECK: .byte 241
index 71179a2937df413d018a38bad10ac394b9b20633..a3498e4589a15cf4a7d91a86287a94390b7e2488 100644 (file)
 ; ASM: .long   0x40                    # Argument: float
 ; ASM: .long   0x41                    # Argument: double
 ; ASM: .long   0x13                    # Argument: __int64
-; ASM: # ArgList (0x1000) {
-; ASM: #   TypeLeafKind: LF_ARGLIST (0x1201)
-; ASM: #   NumArgs: 3
-; ASM: #   Arguments [
-; ASM: #     ArgType: float (0x40)
-; ASM: #     ArgType: double (0x41)
-; ASM: #     ArgType: __int64 (0x13)
-; ASM: #   ]
-; ASM: # }
 ; ASM: # Procedure (0x1001)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1008                  # Record kind: LF_PROCEDURE
 ; ASM: .byte   0x0                     # FunctionOptions
 ; ASM: .short  0x3                     # NumParameters
 ; ASM: .long   0x1000                  # ArgListType: (float, double, __int64)
-; ASM: # Procedure (0x1001) {
-; ASM: #   TypeLeafKind: LF_PROCEDURE (0x1008)
-; ASM: #   ReturnType: void (0x3)
-; ASM: #   CallingConvention: NearC (0x0)
-; ASM: #   FunctionOptions [ (0x0)
-; ASM: #   ]
-; ASM: #   NumParameters: 3
-; ASM: #   ArgListType: (float, double, __int64) (0x1000)
-; ASM: # }
 ; ASM: # FuncId (0x1002)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1601                  # Record kind: LF_FUNC_ID
 ; ASM: .asciz  "f"                     # Name
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # FuncId (0x1002) {
-; ASM: #   TypeLeafKind: LF_FUNC_ID (0x1601)
-; ASM: #   ParentScope: 0x0
-; ASM: #   FunctionType: void (float, double, __int64) (0x1001)
-; ASM: #   Name: f
-; ASM: # }
 ; ASM: # Modifier (0x1003)
 ; ASM: .short  0xa                     # Record length
 ; ASM: .short  0x1001                  # Record kind: LF_MODIFIER
 ; ASM: .short  0x1                     # Modifiers ( Const (0x1) )
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # Modifier (0x1003) {
-; ASM: #   TypeLeafKind: LF_MODIFIER (0x1001)
-; ASM: #   ModifiedType: int (0x74)
-; ASM: #   Modifiers [ (0x1)
-; ASM: #     Const (0x1)
-; ASM: #   ]
-; ASM: # }
 ; ASM: # Pointer (0x1004)
 ; ASM: .short  0xa                     # Record length
 ; ASM: .short  0x1002                  # Record kind: LF_POINTER
 ; ASM: .long   0x1003                  # PointeeType: const int
 ; ASM: .long   0x1000c                 # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ]
-; ASM: # Pointer (0x1004) {
-; ASM: #   TypeLeafKind: LF_POINTER (0x1002)
-; ASM: #   PointeeType: const int (0x1003)
-; ASM: #   PtrType: Near64 (0xC)
-; ASM: #   PtrMode: Pointer (0x0)
-; ASM: #   IsFlat: 0
-; ASM: #   IsConst: 0
-; ASM: #   IsVolatile: 0
-; ASM: #   IsUnaligned: 0
-; ASM: #   IsRestrict: 0
-; ASM: #   IsThisPtr&: 0
-; ASM: #   IsThisPtr&&: 0
-; ASM: #   SizeOf: 8
-; ASM: # }
 ; ASM: # Struct (0x1005)
 ; ASM: .short  0x16                    # Record length
 ; ASM: .short  0x1505                  # Record kind: LF_STRUCTURE
 ; ASM: .long   0x0                     # VShape
 ; ASM: .short  0x0                     # SizeOf
 ; ASM: .asciz  "A"                     # Name
-; ASM: # Struct (0x1005) {
-; ASM: #   TypeLeafKind: LF_STRUCTURE (0x1505)
-; ASM: #   MemberCount: 0
-; ASM: #   Properties [ (0x80)
-; ASM: #     ForwardReference (0x80)
-; ASM: #   ]
-; ASM: #   FieldList: 0x0
-; ASM: #   DerivedFrom: 0x0
-; ASM: #   VShape: 0x0
-; ASM: #   SizeOf: 0
-; ASM: #   Name: A
-; ASM: # }
 ; ASM: # Pointer (0x1006)
 ; ASM: .short  0x12                    # Record length
 ; ASM: .short  0x1002                  # Record kind: LF_POINTER
 ; ASM: .short  0x4                     # Representation: GeneralData
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # Pointer (0x1006) {
-; ASM: #   TypeLeafKind: LF_POINTER (0x1002)
-; ASM: #   PointeeType: int (0x74)
-; ASM: #   PtrType: Near64 (0xC)
-; ASM: #   PtrMode: PointerToDataMember (0x2)
-; ASM: #   IsFlat: 0
-; ASM: #   IsConst: 0
-; ASM: #   IsVolatile: 0
-; ASM: #   IsUnaligned: 0
-; ASM: #   IsRestrict: 0
-; ASM: #   IsThisPtr&: 0
-; ASM: #   IsThisPtr&&: 0
-; ASM: #   SizeOf: 4
-; ASM: #   ClassType: A (0x1005)
-; ASM: #   Representation: GeneralData (0x4)
-; ASM: # }
 ; ASM: # Pointer (0x1007)
 ; ASM: .short  0xa                     # Record length
 ; ASM: .short  0x1002                  # Record kind: LF_POINTER
 ; ASM: .long   0x1005                  # PointeeType: A
 ; ASM: .long   0x1040c                 # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8, isConst ]
-; ASM: # Pointer (0x1007) {
-; ASM: #   TypeLeafKind: LF_POINTER (0x1002)
-; ASM: #   PointeeType: A (0x1005)
-; ASM: #   PtrType: Near64 (0xC)
-; ASM: #   PtrMode: Pointer (0x0)
-; ASM: #   IsFlat: 0
-; ASM: #   IsConst: 1
-; ASM: #   IsVolatile: 0
-; ASM: #   IsUnaligned: 0
-; ASM: #   IsRestrict: 0
-; ASM: #   IsThisPtr&: 0
-; ASM: #   IsThisPtr&&: 0
-; ASM: #   SizeOf: 8
-; ASM: # }
 ; ASM: # ArgList (0x1008)
 ; ASM: .short  0x6                     # Record length
 ; ASM: .short  0x1201                  # Record kind: LF_ARGLIST
 ; ASM: .long   0x0                     # NumArgs
-; ASM: # ArgList (0x1008) {
-; ASM: #   TypeLeafKind: LF_ARGLIST (0x1201)
-; ASM: #   NumArgs: 0
-; ASM: #   Arguments [
-; ASM: #   ]
-; ASM: # }
 ; ASM: # MemberFunction (0x1009)
 ; ASM: .short  0x1a                    # Record length
 ; ASM: .short  0x1009                  # Record kind: LF_MFUNCTION
 ; ASM: .short  0x0                     # NumParameters
 ; ASM: .long   0x1008                  # ArgListType: ()
 ; ASM: .long   0x0                     # ThisAdjustment
-; ASM: # MemberFunction (0x1009) {
-; ASM: #   TypeLeafKind: LF_MFUNCTION (0x1009)
-; ASM: #   ReturnType: void (0x3)
-; ASM: #   ClassType: A (0x1005)
-; ASM: #   ThisType: A* const (0x1007)
-; ASM: #   CallingConvention: NearC (0x0)
-; ASM: #   FunctionOptions [ (0x0)
-; ASM: #   ]
-; ASM: #   NumParameters: 0
-; ASM: #   ArgListType: () (0x1008)
-; ASM: #   ThisAdjustment: 0
-; ASM: # }
 ; ASM: # FieldList (0x100A)
 ; ASM: .short  0x1e                    # Record length
 ; ASM: .short  0x1203                  # Record kind: LF_FIELDLIST
 ; ASM: .byte   243
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # FieldList (0x100A) {
-; ASM: #   TypeLeafKind: LF_FIELDLIST (0x1203)
-; ASM: #   DataMember {
-; ASM: #     TypeLeafKind: LF_MEMBER (0x150D)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     Type: int (0x74)
-; ASM: #     FieldOffset: 0x0
-; ASM: #     Name: a
-; ASM: #   }
-; ASM: #   OneMethod {
-; ASM: #     TypeLeafKind: LF_ONEMETHOD (0x1511)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     Type: void A::() (0x1009)
-; ASM: #     Name: A::f
-; ASM: #   }
-; ASM: # }
 ; ASM: # Struct (0x100B)
 ; ASM: .short  0x16                    # Record length
 ; ASM: .short  0x1505                  # Record kind: LF_STRUCTURE
 ; ASM: .long   0x0                     # VShape
 ; ASM: .short  0x4                     # SizeOf
 ; ASM: .asciz  "A"                     # Name
-; ASM: # Struct (0x100B) {
-; ASM: #   TypeLeafKind: LF_STRUCTURE (0x1505)
-; ASM: #   MemberCount: 2
-; ASM: #   Properties [ (0x0)
-; ASM: #   ]
-; ASM: #   FieldList: <field list> (0x100A)
-; ASM: #   DerivedFrom: 0x0
-; ASM: #   VShape: 0x0
-; ASM: #   SizeOf: 4
-; ASM: #   Name: A
-; ASM: # }
 ; ASM: # StringId (0x100C)
 ; ASM: .short  0x1e                    # Record length
 ; ASM: .short  0x1605                  # Record kind: LF_STRING_ID
 ; ASM: .long   0x0                     # Id
 ; ASM: .asciz  "D:\\src\\llvm\\build\\t.cpp" # StringData
-; ASM: # StringId (0x100C) {
-; ASM: #   TypeLeafKind: LF_STRING_ID (0x1605)
-; ASM: #   Id: 0x0
-; ASM: #   StringData: D:\src\llvm\build\t.cpp
-; ASM: # }
 ; ASM: # UdtSourceLine (0x100D)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1606                  # Record kind: LF_UDT_SRC_LINE
 ; ASM: .long   0x100b                  # UDT: A
 ; ASM: .long   0x100c                  # SourceFile: D:\src\llvm\build\t.cpp
 ; ASM: .long   0x1                     # LineNumber
-; ASM: # UdtSourceLine (0x100D) {
-; ASM: #   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
-; ASM: #   UDT: A (0x100B)
-; ASM: #   SourceFile: D:\src\llvm\build\t.cpp (0x100C)
-; ASM: #   LineNumber: 1
-; ASM: # }
 ; ASM: # Pointer (0x100E)
 ; ASM: .short  0x12                    # Record length
 ; ASM: .short  0x1002                  # Record kind: LF_POINTER
 ; ASM: .short  0x8                     # Representation: GeneralFunction
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # Pointer (0x100E) {
-; ASM: #   TypeLeafKind: LF_POINTER (0x1002)
-; ASM: #   PointeeType: void A::() (0x1009)
-; ASM: #   PtrType: Near64 (0xC)
-; ASM: #   PtrMode: PointerToMemberFunction (0x3)
-; ASM: #   IsFlat: 0
-; ASM: #   IsConst: 0
-; ASM: #   IsVolatile: 0
-; ASM: #   IsUnaligned: 0
-; ASM: #   IsRestrict: 0
-; ASM: #   IsThisPtr&: 0
-; ASM: #   IsThisPtr&&: 0
-; ASM: #   SizeOf: 8
-; ASM: #   ClassType: A (0x1005)
-; ASM: #   Representation: GeneralFunction (0x8)
-; ASM: # }
 ; ASM: # Modifier (0x100F)
 ; ASM: .short  0xa                     # Record length
 ; ASM: .short  0x1001                  # Record kind: LF_MODIFIER
 ; ASM: .short  0x1                     # Modifiers ( Const (0x1) )
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # Modifier (0x100F) {
-; ASM: #   TypeLeafKind: LF_MODIFIER (0x1001)
-; ASM: #   ModifiedType: void (0x3)
-; ASM: #   Modifiers [ (0x1)
-; ASM: #     Const (0x1)
-; ASM: #   ]
-; ASM: # }
 ; ASM: # Pointer (0x1010)
 ; ASM: .short  0xa                     # Record length
 ; ASM: .short  0x1002                  # Record kind: LF_POINTER
 ; ASM: .long   0x100f                  # PointeeType: const void
 ; ASM: .long   0x1000c                 # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ]
-; ASM: # Pointer (0x1010) {
-; ASM: #   TypeLeafKind: LF_POINTER (0x1002)
-; ASM: #   PointeeType: const void (0x100F)
-; ASM: #   PtrType: Near64 (0xC)
-; ASM: #   PtrMode: Pointer (0x0)
-; ASM: #   IsFlat: 0
-; ASM: #   IsConst: 0
-; ASM: #   IsVolatile: 0
-; ASM: #   IsUnaligned: 0
-; ASM: #   IsRestrict: 0
-; ASM: #   IsThisPtr&: 0
-; ASM: #   IsThisPtr&&: 0
-; ASM: #   SizeOf: 8
-; ASM: # }
 ; ASM: # Procedure (0x1011)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1008                  # Record kind: LF_PROCEDURE
 ; ASM: .byte   0x0                     # FunctionOptions
 ; ASM: .short  0x0                     # NumParameters
 ; ASM: .long   0x1008                  # ArgListType: ()
-; ASM: # Procedure (0x1011) {
-; ASM: #   TypeLeafKind: LF_PROCEDURE (0x1008)
-; ASM: #   ReturnType: void (0x3)
-; ASM: #   CallingConvention: NearC (0x0)
-; ASM: #   FunctionOptions [ (0x0)
-; ASM: #   ]
-; ASM: #   NumParameters: 0
-; ASM: #   ArgListType: () (0x1008)
-; ASM: # }
 ; ASM: # FuncId (0x1012)
 ; ASM: .short  0x16                    # Record length
 ; ASM: .short  0x1601                  # Record kind: LF_FUNC_ID
 ; ASM: .asciz  "CharTypes"             # Name
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # FuncId (0x1012) {
-; ASM: #   TypeLeafKind: LF_FUNC_ID (0x1601)
-; ASM: #   ParentScope: 0x0
-; ASM: #   FunctionType: void () (0x1011)
-; ASM: #   Name: CharTypes
-; ASM: # }
 ; ASM: # StringId (0x1013)
 ; ASM: .short  0x1a                    # Record length
 ; ASM: .short  0x1605                  # Record kind: LF_STRING_ID
 ; ASM: .asciz  "D:\\src\\llvm\\build"  # StringData
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # StringId (0x1013) {
-; ASM: #   TypeLeafKind: LF_STRING_ID (0x1605)
-; ASM: #   Id: 0x0
-; ASM: #   StringData: D:\src\llvm\build
-; ASM: # }
 ; ASM: # StringId (0x1014)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1605                  # Record kind: LF_STRING_ID
 ; ASM: .asciz  "t.cpp"                 # StringData
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # StringId (0x1014) {
-; ASM: #   TypeLeafKind: LF_STRING_ID (0x1605)
-; ASM: #   Id: 0x0
-; ASM: #   StringData: t.cpp
-; ASM: # }
 ; ASM: # BuildInfo (0x1015)
 ; ASM: .short  0x1a                    # Record length
 ; ASM: .short  0x1603                  # Record kind: LF_BUILDINFO
 ; ASM: .long   0x0                     # Argument
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # BuildInfo (0x1015) {
-; ASM: #   TypeLeafKind: LF_BUILDINFO (0x1603)
-; ASM: #   NumArgs: 5
-; ASM: #   Arguments [
-; ASM: #     ArgType: D:\src\llvm\build (0x1013)
-; ASM: #     ArgType: 0x0
-; ASM: #     ArgType: t.cpp (0x1014)
-; ASM: #     ArgType: 0x0
-; ASM: #     ArgType: 0x0
-; ASM: #   ]
-; ASM: # }
 
 ; ModuleID = 't.cpp'
 source_filename = "t.cpp"
index e13e38a475b15ac7afb822e0c90959e98bd661f6..23451b0fd42df6fafc081731f8cd7adf573ed2d0 100644 (file)
 ; ASM: .short  0x6                     # Record length
 ; ASM: .short  0x1201                  # Record kind: LF_ARGLIST
 ; ASM: .long   0x0                     # NumArgs
-; ASM: # ArgList (0x1000) {
-; ASM: #   TypeLeafKind: LF_ARGLIST (0x1201)
-; ASM: #   NumArgs: 0
-; ASM: #   Arguments [
-; ASM: #   ]
-; ASM: # }
 ; ASM: # Procedure (0x1001)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1008                  # Record kind: LF_PROCEDURE
 ; ASM: .byte   0x0                     # FunctionOptions
 ; ASM: .short  0x0                     # NumParameters
 ; ASM: .long   0x1000                  # ArgListType: ()
-; ASM: # Procedure (0x1001) {
-; ASM: #   TypeLeafKind: LF_PROCEDURE (0x1008)
-; ASM: #   ReturnType: void (0x3)
-; ASM: #   CallingConvention: NearC (0x0)
-; ASM: #   FunctionOptions [ (0x0)
-; ASM: #   ]
-; ASM: #   NumParameters: 0
-; ASM: #   ArgListType: () (0x1000)
-; ASM: # }
 ; ASM: # FuncId (0x1002)
 ; ASM: .short  0x16                    # Record length
 ; ASM: .short  0x1601                  # Record kind: LF_FUNC_ID
 ; ASM: .byte   243
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # FuncId (0x1002) {
-; ASM: #   TypeLeafKind: LF_FUNC_ID (0x1601)
-; ASM: #   ParentScope: 0x0
-; ASM: #   FunctionType: void () (0x1001)
-; ASM: #   Name: UseTypes
-; ASM: # }
 ; ASM: # Struct (0x1003)
 ; ASM: .short  0x2a                    # Record length
 ; ASM: .short  0x1505                  # Record kind: LF_STRUCTURE
 ; ASM: .asciz  ".?AUStruct@@"          # LinkageName
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # Struct (0x1003) {
-; ASM: #   TypeLeafKind: LF_STRUCTURE (0x1505)
-; ASM: #   MemberCount: 0
-; ASM: #   Properties [ (0x280)
-; ASM: #     ForwardReference (0x80)
-; ASM: #     HasUniqueName (0x200)
-; ASM: #   ]
-; ASM: #   FieldList: 0x0
-; ASM: #   DerivedFrom: 0x0
-; ASM: #   VShape: 0x0
-; ASM: #   SizeOf: 0
-; ASM: #   Name: Struct
-; ASM: #   LinkageName: .?AUStruct@@
-; ASM: # }
 ; ASM: # Modifier (0x1004)
 ; ASM: .short  0xa                     # Record length
 ; ASM: .short  0x1001                  # Record kind: LF_MODIFIER
 ; ASM: .short  0x1                     # Modifiers ( Const (0x1) )
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # Modifier (0x1004) {
-; ASM: #   TypeLeafKind: LF_MODIFIER (0x1001)
-; ASM: #   ModifiedType: int (0x74)
-; ASM: #   Modifiers [ (0x1)
-; ASM: #     Const (0x1)
-; ASM: #   ]
-; ASM: # }
 ; ASM: # FieldList (0x1005)
 ; ASM: .short  0x3e                    # Record length
 ; ASM: .short  0x1203                  # Record kind: LF_FIELDLIST
 ; ASM: .short  0x3                     # Attrs: Public
 ; ASM: .long   0x1004                  # Type: const int
 ; ASM: .asciz  "sdm"                   # Name
-; ASM: # FieldList (0x1005) {
-; ASM: #   TypeLeafKind: LF_FIELDLIST (0x1203)
-; ASM: #   DataMember {
-; ASM: #     TypeLeafKind: LF_MEMBER (0x150D)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     Type: int (0x74)
-; ASM: #     FieldOffset: 0x0
-; ASM: #     Name: s1
-; ASM: #   }
-; ASM: #   DataMember {
-; ASM: #     TypeLeafKind: LF_MEMBER (0x150D)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     Type: int (0x74)
-; ASM: #     FieldOffset: 0x4
-; ASM: #     Name: s2
-; ASM: #   }
-; ASM: #   DataMember {
-; ASM: #     TypeLeafKind: LF_MEMBER (0x150D)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     Type: int (0x74)
-; ASM: #     FieldOffset: 0x8
-; ASM: #     Name: s3
-; ASM: #   }
-; ASM: #   StaticDataMember {
-; ASM: #     TypeLeafKind: LF_STMEMBER (0x150E)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     Type: const int (0x1004)
-; ASM: #     Name: sdm
-; ASM: #   }
-; ASM: # }
 ; ASM: # Struct (0x1006)
 ; ASM: .short  0x2a                    # Record length
 ; ASM: .short  0x1505                  # Record kind: LF_STRUCTURE
 ; ASM: .asciz  ".?AUStruct@@"          # LinkageName
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # Struct (0x1006) {
-; ASM: #   TypeLeafKind: LF_STRUCTURE (0x1505)
-; ASM: #   MemberCount: 4
-; ASM: #   Properties [ (0x200)
-; ASM: #     HasUniqueName (0x200)
-; ASM: #   ]
-; ASM: #   FieldList: <field list> (0x1005)
-; ASM: #   DerivedFrom: 0x0
-; ASM: #   VShape: 0x0
-; ASM: #   SizeOf: 12
-; ASM: #   Name: Struct
-; ASM: #   LinkageName: .?AUStruct@@
-; ASM: # }
 ; ASM: # StringId (0x1007)
 ; ASM: .short  0x1e                    # Record length
 ; ASM: .short  0x1605                  # Record kind: LF_STRING_ID
 ; ASM: .long   0x0                     # Id
 ; ASM: .asciz  "D:\\src\\llvm\\build\\t.cpp" # StringData
-; ASM: # StringId (0x1007) {
-; ASM: #   TypeLeafKind: LF_STRING_ID (0x1605)
-; ASM: #   Id: 0x0
-; ASM: #   StringData: D:\src\llvm\build\t.cpp
-; ASM: # }
 ; ASM: # UdtSourceLine (0x1008)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1606                  # Record kind: LF_UDT_SRC_LINE
 ; ASM: .long   0x1006                  # UDT: Struct
 ; ASM: .long   0x1007                  # SourceFile: D:\src\llvm\build\t.cpp
 ; ASM: .long   0x1                     # LineNumber
-; ASM: # UdtSourceLine (0x1008) {
-; ASM: #   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
-; ASM: #   UDT: Struct (0x1006)
-; ASM: #   SourceFile: D:\src\llvm\build\t.cpp (0x1007)
-; ASM: #   LineNumber: 1
-; ASM: # }
 ; ASM: # Union (0x1009)
 ; ASM: .short  0x1e                    # Record length
 ; ASM: .short  0x1506                  # Record kind: LF_UNION
 ; ASM: .short  0x0                     # SizeOf
 ; ASM: .asciz  "Union"                 # Name
 ; ASM: .asciz  ".?ATUnion@@"           # LinkageName
-; ASM: # Union (0x1009) {
-; ASM: #   TypeLeafKind: LF_UNION (0x1506)
-; ASM: #   MemberCount: 0
-; ASM: #   Properties [ (0x280)
-; ASM: #     ForwardReference (0x80)
-; ASM: #     HasUniqueName (0x200)
-; ASM: #   ]
-; ASM: #   FieldList: 0x0
-; ASM: #   SizeOf: 0
-; ASM: #   Name: Union
-; ASM: #   LinkageName: .?ATUnion@@
-; ASM: # }
 ; ASM: # FieldList (0x100A)
 ; ASM: .short  0x1a                    # Record length
 ; ASM: .short  0x1203                  # Record kind: LF_FIELDLIST
 ; ASM: .long   0x40                    # Type: float
 ; ASM: .short  0x0                     # FieldOffset
 ; ASM: .asciz  "b"                     # Name
-; ASM: # FieldList (0x100A) {
-; ASM: #   TypeLeafKind: LF_FIELDLIST (0x1203)
-; ASM: #   DataMember {
-; ASM: #     TypeLeafKind: LF_MEMBER (0x150D)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     Type: int (0x74)
-; ASM: #     FieldOffset: 0x0
-; ASM: #     Name: a
-; ASM: #   }
-; ASM: #   DataMember {
-; ASM: #     TypeLeafKind: LF_MEMBER (0x150D)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     Type: float (0x40)
-; ASM: #     FieldOffset: 0x0
-; ASM: #     Name: b
-; ASM: #   }
-; ASM: # }
 ; ASM: # Union (0x100B)
 ; ASM: .short  0x1e                    # Record length
 ; ASM: .short  0x1506                  # Record kind: LF_UNION
 ; ASM: .short  0x4                     # SizeOf
 ; ASM: .asciz  "Union"                 # Name
 ; ASM: .asciz  ".?ATUnion@@"           # LinkageName
-; ASM: # Union (0x100B) {
-; ASM: #   TypeLeafKind: LF_UNION (0x1506)
-; ASM: #   MemberCount: 2
-; ASM: #   Properties [ (0x600)
-; ASM: #     HasUniqueName (0x200)
-; ASM: #     Sealed (0x400)
-; ASM: #   ]
-; ASM: #   FieldList: <field list> (0x100A)
-; ASM: #   SizeOf: 4
-; ASM: #   Name: Union
-; ASM: #   LinkageName: .?ATUnion@@
-; ASM: # }
 ; ASM: # UdtSourceLine (0x100C)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1606                  # Record kind: LF_UDT_SRC_LINE
 ; ASM: .long   0x100b                  # UDT: Union
 ; ASM: .long   0x1007                  # SourceFile: D:\src\llvm\build\t.cpp
 ; ASM: .long   0x7                     # LineNumber
-; ASM: # UdtSourceLine (0x100C) {
-; ASM: #   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
-; ASM: #   UDT: Union (0x100B)
-; ASM: #   SourceFile: D:\src\llvm\build\t.cpp (0x1007)
-; ASM: #   LineNumber: 7
-; ASM: # }
 ; ASM: # Class (0x100D)
 ; ASM: .short  0x26                    # Record length
 ; ASM: .short  0x1504                  # Record kind: LF_CLASS
 ; ASM: .short  0x0                     # SizeOf
 ; ASM: .asciz  "Class"                 # Name
 ; ASM: .asciz  ".?AVClass@@"           # LinkageName
-; ASM: # Class (0x100D) {
-; ASM: #   TypeLeafKind: LF_CLASS (0x1504)
-; ASM: #   MemberCount: 0
-; ASM: #   Properties [ (0x280)
-; ASM: #     ForwardReference (0x80)
-; ASM: #     HasUniqueName (0x200)
-; ASM: #   ]
-; ASM: #   FieldList: 0x0
-; ASM: #   DerivedFrom: 0x0
-; ASM: #   VShape: 0x0
-; ASM: #   SizeOf: 0
-; ASM: #   Name: Class
-; ASM: #   LinkageName: .?AVClass@@
-; ASM: # }
 ; ASM: # FieldList (0x100E)
 ; ASM: .short  0x32                    # Record length
 ; ASM: .short  0x1203                  # Record kind: LF_FIELDLIST
 ; ASM: .short  0x8                     # FieldOffset
 ; ASM: .asciz  "prot"                  # Name
 ; ASM: .byte   241
-; ASM: # FieldList (0x100E) {
-; ASM: #   TypeLeafKind: LF_FIELDLIST (0x1203)
-; ASM: #   DataMember {
-; ASM: #     TypeLeafKind: LF_MEMBER (0x150D)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     Type: int (0x74)
-; ASM: #     FieldOffset: 0x0
-; ASM: #     Name: pub
-; ASM: #   }
-; ASM: #   DataMember {
-; ASM: #     TypeLeafKind: LF_MEMBER (0x150D)
-; ASM: #     AccessSpecifier: Private (0x1)
-; ASM: #     Type: int (0x74)
-; ASM: #     FieldOffset: 0x4
-; ASM: #     Name: priv
-; ASM: #   }
-; ASM: #   DataMember {
-; ASM: #     TypeLeafKind: LF_MEMBER (0x150D)
-; ASM: #     AccessSpecifier: Protected (0x2)
-; ASM: #     Type: int (0x74)
-; ASM: #     FieldOffset: 0x8
-; ASM: #     Name: prot
-; ASM: #   }
-; ASM: # }
 ; ASM: # Class (0x100F)
 ; ASM: .short  0x26                    # Record length
 ; ASM: .short  0x1504                  # Record kind: LF_CLASS
 ; ASM: .short  0xc                     # SizeOf
 ; ASM: .asciz  "Class"                 # Name
 ; ASM: .asciz  ".?AVClass@@"           # LinkageName
-; ASM: # Class (0x100F) {
-; ASM: #   TypeLeafKind: LF_CLASS (0x1504)
-; ASM: #   MemberCount: 3
-; ASM: #   Properties [ (0x200)
-; ASM: #     HasUniqueName (0x200)
-; ASM: #   ]
-; ASM: #   FieldList: <field list> (0x100E)
-; ASM: #   DerivedFrom: 0x0
-; ASM: #   VShape: 0x0
-; ASM: #   SizeOf: 12
-; ASM: #   Name: Class
-; ASM: #   LinkageName: .?AVClass@@
-; ASM: # }
 ; ASM: # UdtSourceLine (0x1010)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1606                  # Record kind: LF_UDT_SRC_LINE
 ; ASM: .long   0x100f                  # UDT: Class
 ; ASM: .long   0x1007                  # SourceFile: D:\src\llvm\build\t.cpp
 ; ASM: .long   0xb                     # LineNumber
-; ASM: # UdtSourceLine (0x1010) {
-; ASM: #   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
-; ASM: #   UDT: Class (0x100F)
-; ASM: #   SourceFile: D:\src\llvm\build\t.cpp (0x1007)
-; ASM: #   LineNumber: 11
-; ASM: # }
 ; ASM: # Struct (0x1011)
 ; ASM: .short  0x36                    # Record length
 ; ASM: .short  0x1505                  # Record kind: LF_STRUCTURE
 ; ASM: .asciz  ".?AUDerivedClass@@"    # LinkageName
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # Struct (0x1011) {
-; ASM: #   TypeLeafKind: LF_STRUCTURE (0x1505)
-; ASM: #   MemberCount: 0
-; ASM: #   Properties [ (0x280)
-; ASM: #     ForwardReference (0x80)
-; ASM: #     HasUniqueName (0x200)
-; ASM: #   ]
-; ASM: #   FieldList: 0x0
-; ASM: #   DerivedFrom: 0x0
-; ASM: #   VShape: 0x0
-; ASM: #   SizeOf: 0
-; ASM: #   Name: DerivedClass
-; ASM: #   LinkageName: .?AUDerivedClass@@
-; ASM: # }
 ; ASM: # Pointer (0x1012)
 ; ASM: .short  0xa                     # Record length
 ; ASM: .short  0x1002                  # Record kind: LF_POINTER
 ; ASM: .long   0x1004                  # PointeeType: const int
 ; ASM: .long   0x1000c                 # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ]
-; ASM: # Pointer (0x1012) {
-; ASM: #   TypeLeafKind: LF_POINTER (0x1002)
-; ASM: #   PointeeType: const int (0x1004)
-; ASM: #   PtrType: Near64 (0xC)
-; ASM: #   PtrMode: Pointer (0x0)
-; ASM: #   IsFlat: 0
-; ASM: #   IsConst: 0
-; ASM: #   IsVolatile: 0
-; ASM: #   IsUnaligned: 0
-; ASM: #   IsRestrict: 0
-; ASM: #   IsThisPtr&: 0
-; ASM: #   IsThisPtr&&: 0
-; ASM: #   SizeOf: 8
-; ASM: # }
 ; ASM: # VFTableShape (0x1013)
 ; ASM: .short  0x6                     # Record length
 ; ASM: .short  0xa                     # Record kind: LF_VTSHAPE
 ; ASM: .short  0x1                     # VFEntryCount
 ; ASM: .byte   0x0
 ; ASM: .byte   241
-; ASM: # VFTableShape (0x1013) {
-; ASM: #   TypeLeafKind: LF_VTSHAPE (0xA)
-; ASM: #   VFEntryCount: 1
-; ASM: # }
 ; ASM: # Pointer (0x1014)
 ; ASM: .short  0xa                     # Record length
 ; ASM: .short  0x1002                  # Record kind: LF_POINTER
 ; ASM: .long   0x1013                  # PointeeType: <vftable 1 methods>
 ; ASM: .long   0x1000c                 # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ]
-; ASM: # Pointer (0x1014) {
-; ASM: #   TypeLeafKind: LF_POINTER (0x1002)
-; ASM: #   PointeeType: <vftable 1 methods> (0x1013)
-; ASM: #   PtrType: Near64 (0xC)
-; ASM: #   PtrMode: Pointer (0x0)
-; ASM: #   IsFlat: 0
-; ASM: #   IsConst: 0
-; ASM: #   IsVolatile: 0
-; ASM: #   IsUnaligned: 0
-; ASM: #   IsRestrict: 0
-; ASM: #   IsThisPtr&: 0
-; ASM: #   IsThisPtr&&: 0
-; ASM: #   SizeOf: 8
-; ASM: # }
 ; ASM: # FieldList (0x1015)
 ; ASM: .short  0x32                    # Record length
 ; ASM: .short  0x1203                  # Record kind: LF_FIELDLIST
 ; ASM: .long   0x74                    # Type: int
 ; ASM: .short  0x18                    # FieldOffset
 ; ASM: .asciz  "d"                     # Name
-; ASM: # FieldList (0x1015) {
-; ASM: #   TypeLeafKind: LF_FIELDLIST (0x1203)
-; ASM: #   BaseClass {
-; ASM: #     TypeLeafKind: LF_BCLASS (0x1400)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     BaseType: Struct (0x1003)
-; ASM: #     BaseOffset: 0x0
-; ASM: #   }
-; ASM: #   VirtualBaseClass {
-; ASM: #     TypeLeafKind: LF_VBCLASS (0x1401)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     BaseType: Class (0x100D)
-; ASM: #     VBPtrType: const int* (0x1012)
-; ASM: #     VBPtrOffset: 0x0
-; ASM: #     VBTableIndex: 0x1
-; ASM: #   }
-; ASM: #   VFPtr {
-; ASM: #     TypeLeafKind: LF_VFUNCTAB (0x1409)
-; ASM: #     Type: <vftable 1 methods>* (0x1014)
-; ASM: #   }
-; ASM: #   DataMember {
-; ASM: #     TypeLeafKind: LF_MEMBER (0x150D)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     Type: int (0x74)
-; ASM: #     FieldOffset: 0x18
-; ASM: #     Name: d
-; ASM: #   }
-; ASM: # }
 ; ASM: # Struct (0x1016)
 ; ASM: .short  0x36                    # Record length
 ; ASM: .short  0x1505                  # Record kind: LF_STRUCTURE
 ; ASM: .asciz  ".?AUDerivedClass@@"    # LinkageName
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # Struct (0x1016) {
-; ASM: #   TypeLeafKind: LF_STRUCTURE (0x1505)
-; ASM: #   MemberCount: 4
-; ASM: #   Properties [ (0x200)
-; ASM: #     HasUniqueName (0x200)
-; ASM: #   ]
-; ASM: #   FieldList: <field list> (0x1015)
-; ASM: #   DerivedFrom: 0x0
-; ASM: #   VShape: 0x0
-; ASM: #   SizeOf: 48
-; ASM: #   Name: DerivedClass
-; ASM: #   LinkageName: .?AUDerivedClass@@
-; ASM: # }
 ; ASM: # UdtSourceLine (0x1017)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1606                  # Record kind: LF_UDT_SRC_LINE
 ; ASM: .long   0x1016                  # UDT: DerivedClass
 ; ASM: .long   0x1007                  # SourceFile: D:\src\llvm\build\t.cpp
 ; ASM: .long   0x14                    # LineNumber
-; ASM: # UdtSourceLine (0x1017) {
-; ASM: #   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
-; ASM: #   UDT: DerivedClass (0x1016)
-; ASM: #   SourceFile: D:\src\llvm\build\t.cpp (0x1007)
-; ASM: #   LineNumber: 20
-; ASM: # }
 ; ASM: # Struct (0x1018)
 ; ASM: .short  0x36                    # Record length
 ; ASM: .short  0x1505                  # Record kind: LF_STRUCTURE
 ; ASM: .asciz  "Class::Nested"         # Name
 ; ASM: .asciz  ".?AUNested@Class@@"    # LinkageName
 ; ASM: .byte   241
-; ASM: # Struct (0x1018) {
-; ASM: #   TypeLeafKind: LF_STRUCTURE (0x1505)
-; ASM: #   MemberCount: 0
-; ASM: #   Properties [ (0x288)
-; ASM: #     ForwardReference (0x80)
-; ASM: #     HasUniqueName (0x200)
-; ASM: #     Nested (0x8)
-; ASM: #   ]
-; ASM: #   FieldList: 0x0
-; ASM: #   DerivedFrom: 0x0
-; ASM: #   VShape: 0x0
-; ASM: #   SizeOf: 0
-; ASM: #   Name: Class::Nested
-; ASM: #   LinkageName: .?AUNested@Class@@
-; ASM: # }
 ; ASM: # FieldList (0x1019)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1203                  # Record kind: LF_FIELDLIST
 ; ASM: .long   0x74                    # Type: int
 ; ASM: .short  0x0                     # FieldOffset
 ; ASM: .asciz  "n"                     # Name
-; ASM: # FieldList (0x1019) {
-; ASM: #   TypeLeafKind: LF_FIELDLIST (0x1203)
-; ASM: #   DataMember {
-; ASM: #     TypeLeafKind: LF_MEMBER (0x150D)
-; ASM: #     AccessSpecifier: Public (0x3)
-; ASM: #     Type: int (0x74)
-; ASM: #     FieldOffset: 0x0
-; ASM: #     Name: n
-; ASM: #   }
-; ASM: # }
 ; ASM: # Struct (0x101A)
 ; ASM: .short  0x36                    # Record length
 ; ASM: .short  0x1505                  # Record kind: LF_STRUCTURE
 ; ASM: .asciz  "Class::Nested"         # Name
 ; ASM: .asciz  ".?AUNested@Class@@"    # LinkageName
 ; ASM: .byte   241
-; ASM: # Struct (0x101A) {
-; ASM: #   TypeLeafKind: LF_STRUCTURE (0x1505)
-; ASM: #   MemberCount: 1
-; ASM: #   Properties [ (0x208)
-; ASM: #     HasUniqueName (0x200)
-; ASM: #     Nested (0x8)
-; ASM: #   ]
-; ASM: #   FieldList: <field list> (0x1019)
-; ASM: #   DerivedFrom: 0x0
-; ASM: #   VShape: 0x0
-; ASM: #   SizeOf: 4
-; ASM: #   Name: Class::Nested
-; ASM: #   LinkageName: .?AUNested@Class@@
-; ASM: # }
 ; ASM: # UdtSourceLine (0x101B)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1606                  # Record kind: LF_UDT_SRC_LINE
 ; ASM: .long   0x101a                  # UDT: Class::Nested
 ; ASM: .long   0x1007                  # SourceFile: D:\src\llvm\build\t.cpp
 ; ASM: .long   0x17                    # LineNumber
-; ASM: # UdtSourceLine (0x101B) {
-; ASM: #   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
-; ASM: #   UDT: Class::Nested (0x101A)
-; ASM: #   SourceFile: D:\src\llvm\build\t.cpp (0x1007)
-; ASM: #   LineNumber: 23
-; ASM: # }
 ; ASM: # Pointer (0x101C)
 ; ASM: .short  0xa                     # Record length
 ; ASM: .short  0x1002                  # Record kind: LF_POINTER
 ; ASM: .long   0x1011                  # PointeeType: DerivedClass
 ; ASM: .long   0x1040c                 # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8, isConst ]
-; ASM: # Pointer (0x101C) {
-; ASM: #   TypeLeafKind: LF_POINTER (0x1002)
-; ASM: #   PointeeType: DerivedClass (0x1011)
-; ASM: #   PtrType: Near64 (0xC)
-; ASM: #   PtrMode: Pointer (0x0)
-; ASM: #   IsFlat: 0
-; ASM: #   IsConst: 1
-; ASM: #   IsVolatile: 0
-; ASM: #   IsUnaligned: 0
-; ASM: #   IsRestrict: 0
-; ASM: #   IsThisPtr&: 0
-; ASM: #   IsThisPtr&&: 0
-; ASM: #   SizeOf: 8
-; ASM: # }
 ; ASM: # MemberFunction (0x101D)
 ; ASM: .short  0x1a                    # Record length
 ; ASM: .short  0x1009                  # Record kind: LF_MFUNCTION
 ; ASM: .short  0x0                     # NumParameters
 ; ASM: .long   0x1000                  # ArgListType: ()
 ; ASM: .long   0x0                     # ThisAdjustment
-; ASM: # MemberFunction (0x101D) {
-; ASM: #   TypeLeafKind: LF_MFUNCTION (0x1009)
-; ASM: #   ReturnType: void (0x3)
-; ASM: #   ClassType: DerivedClass (0x1011)
-; ASM: #   ThisType: DerivedClass* const (0x101C)
-; ASM: #   CallingConvention: NearC (0x0)
-; ASM: #   FunctionOptions [ (0x0)
-; ASM: #   ]
-; ASM: #   NumParameters: 0
-; ASM: #   ArgListType: () (0x1000)
-; ASM: #   ThisAdjustment: 0
-; ASM: # }
 ; ASM: # MemberFuncId (0x101E)
 ; ASM: .short  0x26                    # Record length
 ; ASM: .short  0x1602                  # Record kind: LF_MFUNC_ID
 ; ASM: .long   0x101d                  # FunctionType: void DerivedClass::()
 ; ASM: .asciz  "DerivedClass::DerivedClass" # Name
 ; ASM: .byte   241
-; ASM: # MemberFuncId (0x101E) {
-; ASM: #   TypeLeafKind: LF_MFUNC_ID (0x1602)
-; ASM: #   ClassType: DerivedClass (0x1011)
-; ASM: #   FunctionType: void DerivedClass::() (0x101D)
-; ASM: #   Name: DerivedClass::DerivedClass
-; ASM: # }
 ; ASM: # Pointer (0x101F)
 ; ASM: .short  0xa                     # Record length
 ; ASM: .short  0x1002                  # Record kind: LF_POINTER
 ; ASM: .long   0x1011                  # PointeeType: DerivedClass
 ; ASM: .long   0x1000c                 # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ]
-; ASM: # Pointer (0x101F) {
-; ASM: #   TypeLeafKind: LF_POINTER (0x1002)
-; ASM: #   PointeeType: DerivedClass (0x1011)
-; ASM: #   PtrType: Near64 (0xC)
-; ASM: #   PtrMode: Pointer (0x0)
-; ASM: #   IsFlat: 0
-; ASM: #   IsConst: 0
-; ASM: #   IsVolatile: 0
-; ASM: #   IsUnaligned: 0
-; ASM: #   IsRestrict: 0
-; ASM: #   IsThisPtr&: 0
-; ASM: #   IsThisPtr&&: 0
-; ASM: #   SizeOf: 8
-; ASM: # }
 ; ASM: # StringId (0x1020)
 ; ASM: .short  0x1a                    # Record length
 ; ASM: .short  0x1605                  # Record kind: LF_STRING_ID
 ; ASM: .asciz  "D:\\src\\llvm\\build"  # StringData
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # StringId (0x1020) {
-; ASM: #   TypeLeafKind: LF_STRING_ID (0x1605)
-; ASM: #   Id: 0x0
-; ASM: #   StringData: D:\src\llvm\build
-; ASM: # }
 ; ASM: # StringId (0x1021)
 ; ASM: .short  0xe                     # Record length
 ; ASM: .short  0x1605                  # Record kind: LF_STRING_ID
 ; ASM: .asciz  "t.cpp"                 # StringData
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # StringId (0x1021) {
-; ASM: #   TypeLeafKind: LF_STRING_ID (0x1605)
-; ASM: #   Id: 0x0
-; ASM: #   StringData: t.cpp
-; ASM: # }
 ; ASM: # BuildInfo (0x1022)
 ; ASM: .short  0x1a                    # Record length
 ; ASM: .short  0x1603                  # Record kind: LF_BUILDINFO
 ; ASM: .long   0x0                     # Argument
 ; ASM: .byte   242
 ; ASM: .byte   241
-; ASM: # BuildInfo (0x1022) {
-; ASM: #   TypeLeafKind: LF_BUILDINFO (0x1603)
-; ASM: #   NumArgs: 5
-; ASM: #   Arguments [
-; ASM: #     ArgType: D:\src\llvm\build (0x1020)
-; ASM: #     ArgType: 0x0
-; ASM: #     ArgType: t.cpp (0x1021)
-; ASM: #     ArgType: 0x0
-; ASM: #     ArgType: 0x0
-; ASM: #   ]
-; ASM: # }
 
 ; ModuleID = 't.cpp'
 source_filename = "t.cpp"