]> granicus.if.org Git - llvm/commitdiff
[codeview] Write LF_UDT_SRC_LINE records (PR28251)
authorHans Wennborg <hans@hanshq.net>
Wed, 22 Jun 2016 21:22:13 +0000 (21:22 +0000)
committerHans Wennborg <hans@hanshq.net>
Wed, 22 Jun 2016 21:22:13 +0000 (21:22 +0000)
Differential Revision: http://reviews.llvm.org/D21621

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273495 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
test/DebugInfo/COFF/defer-complete-type.ll
test/DebugInfo/COFF/types-basic.ll
test/DebugInfo/COFF/types-calling-conv.ll
test/DebugInfo/COFF/types-data-members.ll
test/DebugInfo/COFF/types-non-virtual-methods.ll
test/DebugInfo/COFF/types-recursive-struct.ll

index 3e4563947a1af6b4112160be056af9803c6046ca..4edc6aece16ee3cabac663fced43ce099fd23217 100644 (file)
@@ -1406,10 +1406,17 @@ TypeIndex CodeViewDebug::lowerCompleteTypeClass(const DICompositeType *Ty) {
       getFullyQualifiedName(Ty->getScope().resolve(), Ty->getName());
 
   uint64_t SizeInBytes = Ty->getSizeInBits() / 8;
-  return TypeTable.writeClass(ClassRecord(
+
+  TypeIndex ClassTI = TypeTable.writeClass(ClassRecord(
       Kind, FieldCount, CO, HfaKind::None, WindowsRTClassKind::None, FieldTI,
       TypeIndex(), VShapeTI, SizeInBytes, FullName, Ty->getIdentifier()));
-  // FIXME: Make an LF_UDT_SRC_LINE record.
+
+  TypeTable.writeUdtSourceLine(UdtSourceLineRecord(
+      ClassTI, TypeTable.writeStringId(StringIdRecord(
+                   TypeIndex(0x0), getFullFilepath(Ty->getFile()))),
+      Ty->getLine()));
+
+  return ClassTI;
 }
 
 TypeIndex CodeViewDebug::lowerTypeUnion(const DICompositeType *Ty) {
@@ -1433,10 +1440,17 @@ TypeIndex CodeViewDebug::lowerCompleteTypeUnion(const DICompositeType *Ty) {
   uint64_t SizeInBytes = Ty->getSizeInBits() / 8;
   std::string FullName =
       getFullyQualifiedName(Ty->getScope().resolve(), Ty->getName());
-  return TypeTable.writeUnion(UnionRecord(FieldCount, CO, HfaKind::None,
-                                          FieldTI, SizeInBytes, FullName,
-                                          Ty->getIdentifier()));
-  // FIXME: Make an LF_UDT_SRC_LINE record.
+
+  TypeIndex UnionTI = TypeTable.writeUnion(
+      UnionRecord(FieldCount, CO, HfaKind::None, FieldTI, SizeInBytes, FullName,
+                  Ty->getIdentifier()));
+
+  TypeTable.writeUdtSourceLine(UdtSourceLineRecord(
+      UnionTI, TypeTable.writeStringId(StringIdRecord(
+                   TypeIndex(0x0), getFullFilepath(Ty->getFile()))),
+      Ty->getLine()));
+
+  return UnionTI;
 }
 
 std::tuple<TypeIndex, TypeIndex, unsigned>
index d3ec61842b48b6fce7d79eaf97e424c8ac067905..828082508f1488ee2b39b1c045bba3c1191e808b 100644 (file)
 ; CHECK:     Name: A
 ; CHECK:     LinkageName: .?AUA@@
 ; CHECK:   }
-; CHECK:   FieldList (0x1008) {
+; CHECK:   StringId (0x1008) {
+; CHECK:     TypeLeafKind: LF_STRING_ID (0x1605)
+; CHECK:     Id: 0x0
+; CHECK:     StringData: D:\src\llvm\build\t.cpp
+; CHECK:   }
+; CHECK:   UdtSourceLine (0x1009) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: A (0x1007)
+; CHECK:     SourceFile: D:\src\llvm\build\t.cpp (0x1008)
+; CHECK:     LineNumber: 2
+; CHECK:   }
+; CHECK:   FieldList (0x100A) {
 ; CHECK:     TypeLeafKind: LF_FIELDLIST (0x1203)
 ; CHECK:     DataMember {
 ; CHECK:       AccessSpecifier: Public (0x3)
 ; CHECK:       Name: b
 ; CHECK:     }
 ; CHECK:   }
-; CHECK:   Struct (0x1009) {
+; CHECK:   Struct (0x100B) {
 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
 ; CHECK:     MemberCount: 1
 ; CHECK:     Properties [ (0x200)
 ; CHECK:       HasUniqueName (0x200)
 ; CHECK:     ]
-; CHECK:     FieldList: <field list> (0x1008)
+; CHECK:     FieldList: <field list> (0x100A)
 ; CHECK:     DerivedFrom: 0x0
 ; CHECK:     VShape: 0x0
 ; CHECK:     SizeOf: 4
 ; CHECK:     Name: B
 ; CHECK:     LinkageName: .?AUB@@
 ; CHECK:   }
-; CHECK:   FuncId (0x100A) {
+; CHECK:   UdtSourceLine (0x100C) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: B (0x100B)
+; CHECK:     SourceFile: D:\src\llvm\build\t.cpp (0x1008)
+; CHECK:     LineNumber: 1
+; CHECK:   }
+; CHECK:   FuncId (0x100D) {
 ; CHECK:     TypeLeafKind: LF_FUNC_ID (0x1601)
 ; CHECK:     ParentScope: 0x0
 ; CHECK:     FunctionType: int (A*) (0x1003)
index b5c241b7ab1b4ae637683752074e97d2b3fe8295..d3ae7041c51bd860f23a18d8a3d80cf198dd89cc 100644 (file)
 ; CHECK:     SizeOf: 4
 ; CHECK:     Name: A
 ; CHECK:   }
-; CHECK:   Pointer (0x100C) {
+; CHECK:   StringId (0x100C) {
+; CHECK:     TypeLeafKind: LF_STRING_ID (0x1605)
+; CHECK:     Id: 0x0
+; CHECK:     StringData: D:\src\llvm\build\t.cpp
+; CHECK:   }
+; CHECK:   UdtSourceLine (0x100D) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: A (0x100B)
+; CHECK:     SourceFile: D:\src\llvm\build\t.cpp (0x100C)
+; CHECK:     LineNumber: 1
+; CHECK:   }
+; CHECK:   Pointer (0x100E) {
 ; CHECK:     TypeLeafKind: LF_POINTER (0x1002)
 ; CHECK:     PointeeType: void A::() (0x1009)
 ; CHECK:     PointerAttributes: 0x1006C
 ; CHECK:     ClassType: A (0x1005)
 ; CHECK:     Representation: GeneralFunction (0x8)
 ; CHECK:   }
-; CHECK:   Modifier (0x100D) {
+; CHECK:   Modifier (0x100F) {
 ; CHECK:     TypeLeafKind: LF_MODIFIER (0x1001)
 ; CHECK:     ModifiedType: void (0x3)
 ; CHECK:     Modifiers [ (0x1)
 ; CHECK:       Const (0x1)
 ; CHECK:     ]
 ; CHECK:   }
-; CHECK:   Pointer (0x100E) {
+; CHECK:   Pointer (0x1010) {
 ; CHECK:     TypeLeafKind: LF_POINTER (0x1002)
-; CHECK:     PointeeType: const void (0x100D)
+; CHECK:     PointeeType: const void (0x100F)
 ; CHECK:     PointerAttributes: 0x1000C
 ; CHECK:     PtrType: Near64 (0xC)
 ; CHECK:     PtrMode: Pointer (0x0)
 ; CHECK:     IsVolatile: 0
 ; CHECK:     IsUnaligned: 0
 ; CHECK:   }
-; CHECK:   Procedure (0x100F) {
+; CHECK:   Procedure (0x1011) {
 ; CHECK:     TypeLeafKind: LF_PROCEDURE (0x1008)
 ; CHECK:     ReturnType: void (0x3)
 ; CHECK:     CallingConvention: NearC (0x0)
 ; CHECK:     NumParameters: 0
 ; CHECK:     ArgListType: () (0x1008)
 ; CHECK:   }
-; CHECK:   FuncId (0x1010) {
+; CHECK:   FuncId (0x1012) {
 ; CHECK:     TypeLeafKind: LF_FUNC_ID (0x1601)
 ; CHECK:     ParentScope: 0x0
-; CHECK:     FunctionType: void () (0x100F)
+; CHECK:     FunctionType: void () (0x1011)
 ; CHECK:     Name: CharTypes
 ; CHECK:   }
 ; CHECK: ]
 ; CHECK:       VarName: v4
 ; CHECK:     }
 ; CHECK:     Local {
-; CHECK:       Type: void A::() A::* (0x100C)
+; CHECK:       Type: void A::() A::* (0x100E)
 ; CHECK:       VarName: v5
 ; CHECK:     }
 ; CHECK:     Local {
 ; CHECK:       VarName: l4
 ; CHECK:     }
 ; CHECK:     Local {
-; CHECK:       Type: const void* (0x100E)
+; CHECK:       Type: const void* (0x1010)
 ; CHECK:       VarName: v6
 ; CHECK:     }
 ; CHECK:     ProcEnd {
 ; CHECK:   ]
 ; CHECK:   Subsection [
 ; CHECK:     ProcStart {
-; CHECK:       Type: CharTypes (0x1010)
+; CHECK:       Type: CharTypes (0x1012)
 ; CHECK:       DisplayName: CharTypes
 ; CHECK:       LinkageName: ?CharTypes@@YAXXZ
 ; CHECK:     }
index 3a8f6beac93f27fe9cfcf570649d45b5dc6e80df..3b0fb07cc79a291167bf692169f87387af2138c4 100644 (file)
 ; CHECK:     SizeOf: 1
 ; CHECK:     Name: A
 ; CHECK:   }
-; CHECK:   MemberFuncId (0x1006) {
+; CHECK:   StringId (0x1006) {
+; CHECK:     TypeLeafKind: LF_STRING_ID (0x1605)
+; CHECK:     Id: 0x0
+; CHECK:     StringData: D:\src\llvm\build\t.cpp
+; CHECK:   }
+; CHECK:   UdtSourceLine (0x1007) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: A (0x1005)
+; CHECK:     SourceFile: D:\src\llvm\build\t.cpp (0x1006)
+; CHECK:     LineNumber: 1
+; CHECK:   }
+; CHECK:   MemberFuncId (0x1008) {
 ; CHECK:     TypeLeafKind: LF_MFUNC_ID (0x1602)
 ; CHECK:     ClassType: A (0x1000)
 ; CHECK:     FunctionType: void A::() (0x1003)
 ; CHECK:     Name: A::thiscallcc
 ; CHECK:   }
-; CHECK:   Procedure (0x1007) {
+; CHECK:   Procedure (0x1009) {
 ; CHECK:     TypeLeafKind: LF_PROCEDURE (0x1008)
 ; CHECK:     ReturnType: void (0x3)
 ; CHECK:     CallingConvention: NearC (0x0)
 ; CHECK:     NumParameters: 0
 ; CHECK:     ArgListType: () (0x1002)
 ; CHECK:   }
-; CHECK:   FuncId (0x1008) {
+; CHECK:   FuncId (0x100A) {
 ; CHECK:     TypeLeafKind: LF_FUNC_ID (0x1601)
 ; CHECK:     ParentScope: 0x0
-; CHECK:     FunctionType: void () (0x1007)
+; CHECK:     FunctionType: void () (0x1009)
 ; CHECK:     Name: cdeclcc
 ; CHECK:   }
-; CHECK:   Procedure (0x1009) {
+; CHECK:   Procedure (0x100B) {
 ; CHECK:     TypeLeafKind: LF_PROCEDURE (0x1008)
 ; CHECK:     ReturnType: void (0x3)
 ; CHECK:     CallingConvention: NearFast (0x4)
 ; CHECK:     NumParameters: 0
 ; CHECK:     ArgListType: () (0x1002)
 ; CHECK:   }
-; CHECK:   FuncId (0x100A) {
+; CHECK:   FuncId (0x100C) {
 ; CHECK:     TypeLeafKind: LF_FUNC_ID (0x1601)
 ; CHECK:     ParentScope: 0x0
-; CHECK:     FunctionType: void () (0x1009)
+; CHECK:     FunctionType: void () (0x100B)
 ; CHECK:     Name: fastcallcc
 ; CHECK:   }
-; CHECK:   Procedure (0x100B) {
+; CHECK:   Procedure (0x100D) {
 ; CHECK:     TypeLeafKind: LF_PROCEDURE (0x1008)
 ; CHECK:     ReturnType: void (0x3)
 ; CHECK:     CallingConvention: NearStdCall (0x7)
 ; CHECK:     NumParameters: 0
 ; CHECK:     ArgListType: () (0x1002)
 ; CHECK:   }
-; CHECK:   FuncId (0x100C) {
+; CHECK:   FuncId (0x100E) {
 ; CHECK:     TypeLeafKind: LF_FUNC_ID (0x1601)
 ; CHECK:     ParentScope: 0x0
-; CHECK:     FunctionType: void () (0x100B)
+; CHECK:     FunctionType: void () (0x100D)
 ; CHECK:     Name: stdcallcc
 ; CHECK:   }
-; CHECK:   Procedure (0x100D) {
+; CHECK:   Procedure (0x100F) {
 ; CHECK:     TypeLeafKind: LF_PROCEDURE (0x1008)
 ; CHECK:     ReturnType: void (0x3)
 ; CHECK:     CallingConvention: NearVector (0x18)
 ; CHECK:     NumParameters: 0
 ; CHECK:     ArgListType: () (0x1002)
 ; CHECK:   }
-; CHECK:   FuncId (0x100E) {
+; CHECK:   FuncId (0x1010) {
 ; CHECK:     TypeLeafKind: LF_FUNC_ID (0x1601)
 ; CHECK:     ParentScope: 0x0
-; CHECK:     FunctionType: void () (0x100D)
+; CHECK:     FunctionType: void () (0x100F)
 ; CHECK:     Name: vectorcallcc
 ; CHECK:   }
 ; CHECK: ]
index ba3ef7bb2e5539c36c6ea12ef41ceb53b8184bf0..2f1b192812318406e6a934d94e9b05706ac84811 100644 (file)
 ; CHECK:     Name: Struct
 ; CHECK:     LinkageName: .?AUStruct@@
 ; CHECK:   }
-; CHECK:   Union (0x1007) {
+; CHECK:   StringId (0x1007) {
+; CHECK:     TypeLeafKind: LF_STRING_ID (0x1605)
+; CHECK:     Id: 0x0
+; CHECK:     StringData: D:\src\llvm\build\t.cpp
+; CHECK:   }
+; CHECK:   UdtSourceLine (0x1008) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: Struct (0x1006)
+; CHECK:     SourceFile: D:\src\llvm\build\t.cpp (0x1007)
+; CHECK:     LineNumber: 1
+; CHECK:   }
+; CHECK:   Union (0x1009) {
 ; CHECK:     TypeLeafKind: LF_UNION (0x1506)
 ; CHECK:     MemberCount: 0
 ; CHECK:     Properties [ (0x280)
 ; CHECK:     Name: Union
 ; CHECK:     LinkageName: .?ATUnion@@
 ; CHECK:   }
-; CHECK:   FieldList (0x1008) {
+; CHECK:   FieldList (0x100A) {
 ; CHECK:     TypeLeafKind: LF_FIELDLIST (0x1203)
 ; CHECK:     DataMember {
 ; CHECK:       AccessSpecifier: Public (0x3)
 ; CHECK:       Name: b
 ; CHECK:     }
 ; CHECK:   }
-; CHECK:   Union (0x1009) {
+; CHECK:   Union (0x100B) {
 ; CHECK:     TypeLeafKind: LF_UNION (0x1506)
 ; CHECK:     MemberCount: 2
 ; CHECK:     Properties [ (0x200)
 ; CHECK:       HasUniqueName (0x200)
 ; CHECK:     ]
-; CHECK:     FieldList: <field list> (0x1008)
+; CHECK:     FieldList: <field list> (0x100A)
 ; CHECK:     SizeOf: 4
 ; CHECK:     Name: Union
 ; CHECK:     LinkageName: .?ATUnion@@
 ; CHECK:   }
-; CHECK:   Class (0x100A) {
+; CHECK:   UdtSourceLine (0x100C) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: Union (0x100B)
+; CHECK:     SourceFile: D:\src\llvm\build\t.cpp (0x1007)
+; CHECK:     LineNumber: 7
+; CHECK:   }
+; CHECK:   Class (0x100D) {
 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
 ; CHECK:     MemberCount: 0
 ; CHECK:     Properties [ (0x280)
 ; CHECK:     VShape: 0x0
 ; CHECK:     SizeOf: 0
 ; CHECK:     Name: Class
+; CHECK:     LinkageName: .?AVClass@@
 ; CHECK:   }
-; CHECK:   FieldList (0x100B) {
+; CHECK:   FieldList (0x100E) {
 ; CHECK:     TypeLeafKind: LF_FIELDLIST (0x1203)
 ; CHECK:     DataMember {
 ; CHECK:       AccessSpecifier: Public (0x3)
 ; CHECK:       Name: prot
 ; CHECK:     }
 ; CHECK:   }
-; CHECK:   Class (0x100C) {
+; CHECK:   Class (0x100F) {
 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
 ; CHECK:     MemberCount: 3
 ; CHECK:     Properties [ (0x200)
 ; CHECK:       HasUniqueName (0x200)
 ; CHECK:     ]
-; CHECK:     FieldList: <field list> (0x100B)
+; CHECK:     FieldList: <field list> (0x100E)
 ; CHECK:     DerivedFrom: 0x0
 ; CHECK:     VShape: 0x0
 ; CHECK:     SizeOf: 12
 ; CHECK:     Name: Class
+; CHECK:     LinkageName: .?AVClass@@
+; CHECK:   }
+; CHECK:   UdtSourceLine (0x1010) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: Class (0x100F)
+; CHECK:     SourceFile: D:\src\llvm\build\t.cpp (0x1007)
+; CHECK:     LineNumber: 11
 ; CHECK:   }
-; CHECK:   Struct (0x100D) {
+; CHECK:   Struct (0x1011) {
 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
 ; CHECK:     MemberCount: 0
 ; CHECK:     Properties [ (0x280)
 ; CHECK:     Name: DerivedClass
 ; CHECK:     LinkageName: .?AUDerivedClass@@
 ; CHECK:   }
-; CHECK:   Procedure (0x100E) {
+; CHECK:   Procedure (0x1012) {
 ; CHECK:     TypeLeafKind: LF_PROCEDURE (0x1008)
 ; CHECK:     ReturnType: int (0x74)
 ; CHECK:     CallingConvention: NearC (0x0)
 ; CHECK:     NumParameters: 0
 ; CHECK:     ArgListType: () (0x1000)
 ; CHECK:   }
-; CHECK:   Pointer (0x100F) {
+; CHECK:   Pointer (0x1013) {
 ; CHECK:     TypeLeafKind: LF_POINTER (0x1002)
-; CHECK:     PointeeType: int () (0x100E)
+; CHECK:     PointeeType: int () (0x1012)
 ; CHECK:     PointerAttributes: 0x1000C
 ; CHECK:     PtrType: Near64 (0xC)
 ; CHECK:     PtrMode: Pointer (0x0)
 ; CHECK:     IsConst: 0
 ; CHECK:     IsVolatile: 0
 ; CHECK:     IsUnaligned: 0
+; CHECK:     SizeOf: 8
 ; CHECK:   }
-; CHECK:   Pointer (0x1010) {
+; CHECK:   Pointer (0x1014) {
 ; CHECK:     TypeLeafKind: LF_POINTER (0x1002)
-; CHECK:     PointeeType: int ()* (0x100F)
+; CHECK:     PointeeType: int ()* (0x1013)
 ; CHECK:     PointerAttributes: 0x1000C
 ; CHECK:     PtrType: Near64 (0xC)
 ; CHECK:     PtrMode: Pointer (0x0)
 ; CHECK:     IsConst: 0
 ; CHECK:     IsVolatile: 0
 ; CHECK:     IsUnaligned: 0
+; CHECK:     SizeOf: 8
 ; CHECK:   }
-; CHECK:   FieldList (0x1011) {
+; CHECK:   FieldList (0x1015) {
 ; CHECK:     TypeLeafKind: LF_FIELDLIST (0x1203)
 ; CHECK:     DataMember {
 ; CHECK:       AccessSpecifier: Public (0x3)
-; CHECK:       Type: int ()** (0x1010)
+; CHECK:       Type: int ()** (0x1014)
 ; CHECK:       FieldOffset: 0x0
 ; CHECK:       Name: _vptr$DerivedClass
 ; CHECK:     }
 ; CHECK:       Name: d
 ; CHECK:     }
 ; CHECK:   }
-; CHECK:   Struct (0x1012) {
+; CHECK:   Struct (0x1016) {
 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
 ; CHECK:     MemberCount: 2
 ; CHECK:     Properties [ (0x200)
 ; CHECK:       HasUniqueName (0x200)
 ; CHECK:     ]
-; CHECK:     FieldList: <field list> (0x1011)
+; CHECK:     FieldList: <field list> (0x1015)
 ; CHECK:     DerivedFrom: 0x0
 ; CHECK:     VShape: 0x0
 ; CHECK:     SizeOf: 48
 ; CHECK:     Name: DerivedClass
 ; CHECK:     LinkageName: .?AUDerivedClass@@
 ; CHECK:   }
-; CHECK:   Struct (0x1013) {
+; CHECK:   UdtSourceLine (0x1017) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: DerivedClass (0x1016)
+; CHECK:     SourceFile: D:\src\llvm\build\t.cpp (0x1007)
+; CHECK:     LineNumber: 20
+; CHECK:   }
+; CHECK:   Struct (0x1018) {
 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
 ; CHECK:     MemberCount: 0
 ; CHECK:     Properties [ (0x280)
 ; CHECK:     Name: Class::Nested
 ; CHECK:     LinkageName: .?AUNested@Class@@
 ; CHECK:   }
-; CHECK:   FieldList (0x1014) {
+; CHECK:   FieldList (0x1019) {
 ; CHECK:     TypeLeafKind: LF_FIELDLIST (0x1203)
 ; CHECK:     DataMember {
 ; CHECK:       AccessSpecifier: Public (0x3)
 ; CHECK:       Name: n
 ; CHECK:     }
 ; CHECK:   }
-; CHECK:   Struct (0x1015) {
+; CHECK:   Struct (0x101A) {
 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
 ; CHECK:     MemberCount: 1
 ; CHECK:     Properties [ (0x200)
 ; CHECK:       HasUniqueName (0x200)
 ; CHECK:     ]
-; CHECK:     FieldList: <field list> (0x1014)
+; CHECK:     FieldList: <field list> (0x1019)
 ; CHECK:     DerivedFrom: 0x0
 ; CHECK:     VShape: 0x0
 ; CHECK:     SizeOf: 4
 ; CHECK:     Name: Class::Nested
 ; CHECK:     LinkageName: .?AUNested@Class@@
 ; CHECK:   }
-; CHECK:   Pointer (0x1016) {
+; CHECK:   UdtSourceLine (0x101B) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: Class::Nested (0x101A)
+; CHECK:     SourceFile: D:\src\llvm\build\t.cpp (0x1007)
+; CHECK:     LineNumber: 23
+; CHECK:   }
+; CHECK:   Pointer (0x101C) {
 ; CHECK:     TypeLeafKind: LF_POINTER (0x1002)
-; CHECK:     PointeeType: DerivedClass (0x100D)
+; CHECK:     PointeeType: DerivedClass (0x1011)
 ; CHECK:     PointerAttributes: 0x1000C
 ; CHECK:     PtrType: Near64 (0xC)
 ; CHECK:     PtrMode: Pointer (0x0)
 ; CHECK:     IsConst: 0
 ; CHECK:     IsVolatile: 0
 ; CHECK:     IsUnaligned: 0
+; CHECK:     SizeOf: 8
 ; CHECK:   }
-; CHECK:   MemberFunction (0x1017) {
+; CHECK:   MemberFunction (0x101D) {
 ; CHECK:     TypeLeafKind: LF_MFUNCTION (0x1009)
 ; CHECK:     ReturnType: void (0x3)
-; CHECK:     ClassType: DerivedClass (0x100D)
-; CHECK:     ThisType: DerivedClass* (0x1016)
+; CHECK:     ClassType: DerivedClass (0x1011)
+; CHECK:     ThisType: DerivedClass* (0x101C)
 ; CHECK:     CallingConvention: NearC (0x0)
 ; CHECK:     FunctionOptions [ (0x0)
 ; CHECK:     ]
 ; CHECK:     ArgListType: () (0x1000)
 ; CHECK:     ThisAdjustment: 0
 ; CHECK:   }
-; CHECK:   FuncId (0x1018) {
+; CHECK:   MemberFuncId (0x101E) {
 ; CHECK:     TypeLeafKind: LF_MFUNC_ID (0x1602)
-; CHECK:     ClassType: DerivedClass (0x100D)
-; CHECK:     FunctionType: void DerivedClass::() (0x1017)
+; CHECK:     ClassType: DerivedClass (0x1011)
+; CHECK:     FunctionType: void DerivedClass::() (0x101D)
 ; CHECK:     Name: DerivedClass::DerivedClass
 ; CHECK:   }
 ; CHECK: ]
index f4d3b5431bc6bf4f6dcf15129b5ed88f30f7c906..97ec8e7d59faefb2200135baf240835df1705d14 100644 (file)
 ; CHECK:     SizeOf: 1
 ; CHECK:     Name: A
 ; CHECK:   }
-; CHECK:   Class (0x1008) {
+; CHECK:   StringId (0x1008) {
+; CHECK:     TypeLeafKind: LF_STRING_ID (0x1605)
+; CHECK:     Id: 0x0
+; CHECK:     StringData: \t.cpp
+; CHECK:   }
+; CHECK:   UdtSourceLine (0x1009) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: A (0x1007)
+; CHECK:     SourceFile: \t.cpp (0x1008)
+; CHECK:     LineNumber: 1
+; CHECK:   }
+; CHECK:   Class (0x100A) {
 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
 ; CHECK:     MemberCount: 0
 ; CHECK:     Properties [ (0x80)
 ; CHECK:     SizeOf: 0
 ; CHECK:     Name: B
 ; CHECK:   }
-; CHECK:   Pointer (0x1009) {
+; CHECK:   Pointer (0x100B) {
 ; CHECK:     TypeLeafKind: LF_POINTER (0x1002)
-; CHECK:     PointeeType: B (0x1008)
+; CHECK:     PointeeType: B (0x100A)
 ; CHECK:     PointerAttributes: 0x800A
 ; CHECK:     PtrType: Near32 (0xA)
 ; CHECK:     PtrMode: Pointer (0x0)
 ; CHECK:     IsConst: 0
 ; CHECK:     IsVolatile: 0
 ; CHECK:     IsUnaligned: 0
+; CHECK:     SizeOf: 4
 ; CHECK:   }
-; CHECK:   MemberFunction (0x100A) {
+; CHECK:   MemberFunction (0x100C) {
 ; CHECK:     TypeLeafKind: LF_MFUNCTION (0x1009)
 ; CHECK:     ReturnType: void (0x3)
-; CHECK:     ClassType: B (0x1008)
-; CHECK:     ThisType: B* (0x1009)
+; CHECK:     ClassType: B (0x100A)
+; CHECK:     ThisType: B* (0x100B)
 ; CHECK:     CallingConvention: ThisCall (0xB)
 ; CHECK:     FunctionOptions [ (0x0)
 ; CHECK:     ]
 ; CHECK:     ArgListType: () (0x1000)
 ; CHECK:     ThisAdjustment: 0
 ; CHECK:   }
-; CHECK:   ArgList (0x100B) {
+; CHECK:   ArgList (0x100D) {
 ; CHECK:     TypeLeafKind: LF_ARGLIST (0x1201)
 ; CHECK:     NumArgs: 1
 ; CHECK:     Arguments [
 ; CHECK:       ArgType: float (0x40)
 ; CHECK:     ]
 ; CHECK:   }
-; CHECK:   MemberFunction (0x100C) {
+; CHECK:   MemberFunction (0x100E) {
 ; CHECK:     TypeLeafKind: LF_MFUNCTION (0x1009)
 ; CHECK:     ReturnType: void (0x3)
-; CHECK:     ClassType: B (0x1008)
-; CHECK:     ThisType: B* (0x1009)
+; CHECK:     ClassType: B (0x100A)
+; CHECK:     ThisType: B* (0x100B)
 ; CHECK:     CallingConvention: ThisCall (0xB)
 ; CHECK:     FunctionOptions [ (0x0)
 ; CHECK:     ]
 ; CHECK:     NumParameters: 1
-; CHECK:     ArgListType: (float) (0x100B)
+; CHECK:     ArgListType: (float) (0x100D)
 ; CHECK:     ThisAdjustment: 0
 ; CHECK:   }
-; CHECK:   ArgList (0x100D) {
+; CHECK:   ArgList (0x100F) {
 ; CHECK:     TypeLeafKind: LF_ARGLIST (0x1201)
 ; CHECK:     NumArgs: 1
 ; CHECK:     Arguments [
 ; CHECK:       ArgType: int (0x74)
 ; CHECK:     ]
 ; CHECK:   }
-; CHECK:   MemberFunction (0x100E) {
+; CHECK:   MemberFunction (0x1010) {
 ; CHECK:     TypeLeafKind: LF_MFUNCTION (0x1009)
 ; CHECK:     ReturnType: void (0x3)
-; CHECK:     ClassType: B (0x1008)
-; CHECK:     ThisType: B* (0x1009)
+; CHECK:     ClassType: B (0x100A)
+; CHECK:     ThisType: B* (0x100B)
 ; CHECK:     CallingConvention: ThisCall (0xB)
 ; CHECK:     FunctionOptions [ (0x0)
 ; CHECK:     ]
 ; CHECK:     NumParameters: 1
-; CHECK:     ArgListType: (int) (0x100D)
+; CHECK:     ArgListType: (int) (0x100F)
 ; CHECK:     ThisAdjustment: 0
 ; CHECK:   }
-; CHECK:   MethodOverloadList (0x100F) {
+; CHECK:   MethodOverloadList (0x1011) {
 ; CHECK:     TypeLeafKind: LF_METHODLIST (0x1206)
 ; CHECK:     Method [
 ; CHECK:       AccessSpecifier: Public (0x3)
-; CHECK:       Type: void B::(float) (0x100C)
+; CHECK:       Type: void B::(float) (0x100E)
 ; CHECK:     ]
 ; CHECK:     Method [
 ; CHECK:       AccessSpecifier: Public (0x3)
-; CHECK:       Type: void B::(int) (0x100E)
+; CHECK:       Type: void B::(int) (0x1010)
 ; CHECK:     ]
 ; CHECK:   }
-; CHECK:   FieldList (0x1010) {
+; CHECK:   FieldList (0x1012) {
 ; CHECK:     TypeLeafKind: LF_FIELDLIST (0x1203)
 ; CHECK:     OneMethod {
 ; CHECK:       AccessSpecifier: Private (0x1)
-; CHECK:       Type: void B::() (0x100A)
+; CHECK:       Type: void B::() (0x100C)
 ; CHECK:       Name: B::f_default_private
 ; CHECK:     }
 ; CHECK:     OverloadedMethod {
 ; CHECK:       MethodCount: 0x2
-; CHECK:       MethodListIndex: 0x100F
+; CHECK:       MethodListIndex: 0x1011
 ; CHECK:       Name: B::f
 ; CHECK:     }
 ; CHECK:   }
-; CHECK:   Class (0x1011) {
+; CHECK:   Class (0x1013) {
 ; CHECK:     TypeLeafKind: LF_CLASS (0x1504)
 ; CHECK:     MemberCount: 3
 ; CHECK:     Properties [ (0x0)
 ; CHECK:     ]
-; CHECK:     FieldList: <field list> (0x1010)
+; CHECK:     FieldList: <field list> (0x1012)
 ; CHECK:     DerivedFrom: 0x0
 ; CHECK:     VShape: 0x0
 ; CHECK:     SizeOf: 1
 ; CHECK:     Name: B
 ; CHECK:   }
+; CHECK:   UdtSourceLine (0x1014) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: B (0x1013)
+; CHECK:     SourceFile: \t.cpp (0x1008)
+; CHECK:     LineNumber: 11
+; CHECK:   }
 ; CHECK: ]
 
 
index 88bab35e20f583fc3f5c604802067f1187c1f02f..6727eda754c4c4daf017f2564b36b254266d75a1 100644 (file)
 ; CHECK:     SizeOf: 8
 ; CHECK:     Name: A
 ; CHECK:   }
-; CHECK:   FieldList (0x1008) {
+; CHECK:   StringId (0x1008) {
+; CHECK:     TypeLeafKind: LF_STRING_ID (0x1605)
+; CHECK:     Id: 0x0
+; CHECK:     StringData: D:\src\llvm\build\t.cpp
+; CHECK:   }
+; CHECK:   UdtSourceLine (0x1009) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: A (0x1007)
+; CHECK:     SourceFile: D:\src\llvm\build\t.cpp (0x1008)
+; CHECK:     LineNumber: 2
+; CHECK:   }
+; CHECK:   FieldList (0x100A) {
 ; CHECK:     TypeLeafKind: LF_FIELDLIST (0x1203)
 ; CHECK:     DataMember {
 ; CHECK:       AccessSpecifier: Public (0x3)
 ; CHECK:       Name: a
 ; CHECK:     }
 ; CHECK:   }
-; CHECK:   Struct (0x1009) {
+; CHECK:   Struct (0x100B) {
 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
 ; CHECK:     MemberCount: 1
 ; CHECK:     Properties [ (0x0)
 ; CHECK:     ]
-; CHECK:     FieldList: <field list> (0x1008)
+; CHECK:     FieldList: <field list> (0x100A)
 ; CHECK:     DerivedFrom: 0x0
 ; CHECK:     VShape: 0x0
 ; CHECK:     SizeOf: 8
 ; CHECK:     Name: B
 ; CHECK:   }
+; CHECK:   UdtSourceLine (0x100C) {
+; CHECK:     TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+; CHECK:     UDT: B (0x100B)
+; CHECK:     SourceFile: D:\src\llvm\build\t.cpp (0x1008)
+; CHECK:     LineNumber: 3
+; CHECK:   }
 ; CHECK: ]
 
 ; ModuleID = 't.cpp'