[llvm] r273495 - [codeview] Write LF_UDT_SRC_LINE records (PR28251)

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 22 14:22:13 PDT 2016


Author: hans
Date: Wed Jun 22 16:22:13 2016
New Revision: 273495

URL: http://llvm.org/viewvc/llvm-project?rev=273495&view=rev
Log:
[codeview] Write LF_UDT_SRC_LINE records (PR28251)

Differential Revision: http://reviews.llvm.org/D21621

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

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp?rev=273495&r1=273494&r2=273495&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp Wed Jun 22 16:22:13 2016
@@ -1406,10 +1406,17 @@ TypeIndex CodeViewDebug::lowerCompleteTy
       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::lowerCompleteTy
   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>

Modified: llvm/trunk/test/DebugInfo/COFF/defer-complete-type.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/COFF/defer-complete-type.ll?rev=273495&r1=273494&r2=273495&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/COFF/defer-complete-type.ll (original)
+++ llvm/trunk/test/DebugInfo/COFF/defer-complete-type.ll Wed Jun 22 16:22:13 2016
@@ -103,7 +103,18 @@
 ; 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)
@@ -112,20 +123,26 @@
 ; 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)

Modified: llvm/trunk/test/DebugInfo/COFF/types-basic.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/COFF/types-basic.ll?rev=273495&r1=273494&r2=273495&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/COFF/types-basic.ll (original)
+++ llvm/trunk/test/DebugInfo/COFF/types-basic.ll Wed Jun 22 16:22:13 2016
@@ -156,7 +156,18 @@
 ; 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
@@ -169,16 +180,16 @@
 ; 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)
@@ -187,7 +198,7 @@
 ; 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)
@@ -196,10 +207,10 @@
 ; 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: ]
@@ -260,7 +271,7 @@
 ; CHECK:       VarName: v4
 ; CHECK:     }
 ; CHECK:     Local {
-; CHECK:       Type: void A::() A::* (0x100C)
+; CHECK:       Type: void A::() A::* (0x100E)
 ; CHECK:       VarName: v5
 ; CHECK:     }
 ; CHECK:     Local {
@@ -280,7 +291,7 @@
 ; CHECK:       VarName: l4
 ; CHECK:     }
 ; CHECK:     Local {
-; CHECK:       Type: const void* (0x100E)
+; CHECK:       Type: const void* (0x1010)
 ; CHECK:       VarName: v6
 ; CHECK:     }
 ; CHECK:     ProcEnd {
@@ -288,7 +299,7 @@
 ; CHECK:   ]
 ; CHECK:   Subsection [
 ; CHECK:     ProcStart {
-; CHECK:       Type: CharTypes (0x1010)
+; CHECK:       Type: CharTypes (0x1012)
 ; CHECK:       DisplayName: CharTypes
 ; CHECK:       LinkageName: ?CharTypes@@YAXXZ
 ; CHECK:     }

Modified: llvm/trunk/test/DebugInfo/COFF/types-calling-conv.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/COFF/types-calling-conv.ll?rev=273495&r1=273494&r2=273495&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/COFF/types-calling-conv.ll (original)
+++ llvm/trunk/test/DebugInfo/COFF/types-calling-conv.ll Wed Jun 22 16:22:13 2016
@@ -76,13 +76,24 @@
 ; 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)
@@ -91,13 +102,13 @@
 ; 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)
@@ -106,13 +117,13 @@
 ; 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)
@@ -121,13 +132,13 @@
 ; 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)
@@ -136,10 +147,10 @@
 ; 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: ]

Modified: llvm/trunk/test/DebugInfo/COFF/types-data-members.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/COFF/types-data-members.ll?rev=273495&r1=273494&r2=273495&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/COFF/types-data-members.ll (original)
+++ llvm/trunk/test/DebugInfo/COFF/types-data-members.ll Wed Jun 22 16:22:13 2016
@@ -120,7 +120,18 @@
 ; 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)
@@ -132,7 +143,7 @@
 ; CHECK:     Name: Union
 ; CHECK:     LinkageName: .?ATUnion@@
 ; CHECK:   }
-; CHECK:   FieldList (0x1008) {
+; CHECK:   FieldList (0x100A) {
 ; CHECK:     TypeLeafKind: LF_FIELDLIST (0x1203)
 ; CHECK:     DataMember {
 ; CHECK:       AccessSpecifier: Public (0x3)
@@ -147,18 +158,24 @@
 ; 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)
@@ -170,8 +187,9 @@
 ; 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)
@@ -192,19 +210,26 @@
 ; 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:   Struct (0x100D) {
+; 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 (0x1011) {
 ; CHECK:     TypeLeafKind: LF_STRUCTURE (0x1505)
 ; CHECK:     MemberCount: 0
 ; CHECK:     Properties [ (0x280)
@@ -218,7 +243,7 @@
 ; 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)
@@ -227,9 +252,9 @@
 ; 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)
@@ -237,10 +262,11 @@
 ; 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)
@@ -248,12 +274,13 @@
 ; 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:     }
@@ -264,20 +291,26 @@
 ; 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)
@@ -291,7 +324,7 @@
 ; CHECK:     Name: Class::Nested
 ; CHECK:     LinkageName: .?AUNested at Class@@
 ; CHECK:   }
-; CHECK:   FieldList (0x1014) {
+; CHECK:   FieldList (0x1019) {
 ; CHECK:     TypeLeafKind: LF_FIELDLIST (0x1203)
 ; CHECK:     DataMember {
 ; CHECK:       AccessSpecifier: Public (0x3)
@@ -300,22 +333,28 @@
 ; 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 at 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)
@@ -323,12 +362,13 @@
 ; 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:     ]
@@ -336,10 +376,10 @@
 ; 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: ]

Modified: llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll?rev=273495&r1=273494&r2=273495&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll (original)
+++ llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll Wed Jun 22 16:22:13 2016
@@ -118,7 +118,18 @@
 ; 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)
@@ -130,9 +141,9 @@
 ; 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)
@@ -140,12 +151,13 @@
 ; 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:     ]
@@ -153,79 +165,85 @@
 ; 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: ]
 
 

Modified: llvm/trunk/test/DebugInfo/COFF/types-recursive-struct.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/COFF/types-recursive-struct.ll?rev=273495&r1=273494&r2=273495&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/COFF/types-recursive-struct.ll (original)
+++ llvm/trunk/test/DebugInfo/COFF/types-recursive-struct.ll Wed Jun 22 16:22:13 2016
@@ -97,7 +97,18 @@
 ; 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)
@@ -106,17 +117,23 @@
 ; 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'




More information about the llvm-commits mailing list