Index: llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp =================================================================== --- llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp +++ llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp @@ -1406,10 +1406,17 @@ 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 @@ 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 Index: llvm/trunk/test/DebugInfo/COFF/defer-complete-type.ll =================================================================== --- llvm/trunk/test/DebugInfo/COFF/defer-complete-type.ll +++ llvm/trunk/test/DebugInfo/COFF/defer-complete-type.ll @@ -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: (0x1008) +; CHECK: FieldList: (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: llvm/trunk/test/DebugInfo/COFF/types-basic.ll =================================================================== --- llvm/trunk/test/DebugInfo/COFF/types-basic.ll +++ llvm/trunk/test/DebugInfo/COFF/types-basic.ll @@ -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: } Index: llvm/trunk/test/DebugInfo/COFF/types-calling-conv.ll =================================================================== --- llvm/trunk/test/DebugInfo/COFF/types-calling-conv.ll +++ llvm/trunk/test/DebugInfo/COFF/types-calling-conv.ll @@ -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: ] Index: llvm/trunk/test/DebugInfo/COFF/types-data-members.ll =================================================================== --- llvm/trunk/test/DebugInfo/COFF/types-data-members.ll +++ llvm/trunk/test/DebugInfo/COFF/types-data-members.ll @@ -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: (0x1008) +; CHECK: FieldList: (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: (0x100B) +; CHECK: FieldList: (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: (0x1011) +; CHECK: FieldList: (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@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: (0x1014) +; CHECK: FieldList: (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) @@ -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: ] Index: llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll =================================================================== --- llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll +++ llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll @@ -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: (0x1010) +; CHECK: FieldList: (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: llvm/trunk/test/DebugInfo/COFF/types-recursive-struct.ll =================================================================== --- llvm/trunk/test/DebugInfo/COFF/types-recursive-struct.ll +++ llvm/trunk/test/DebugInfo/COFF/types-recursive-struct.ll @@ -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: (0x1008) +; CHECK: FieldList: (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'