summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/test/COFF/Inputs/pdb-hashes-1.yaml140
-rw-r--r--lld/test/COFF/Inputs/pdb-hashes-2-missing.yaml45
-rw-r--r--lld/test/COFF/Inputs/pdb-hashes-2.yaml77
-rw-r--r--lld/test/COFF/pdb-global-hashes.test4
-rw-r--r--llvm/lib/DebugInfo/CodeView/TypeHashing.cpp1
-rw-r--r--llvm/test/DebugInfo/COFF/global-type-hashes.ll55
-rw-r--r--llvm/test/DebugInfo/COFF/pr37492.ll63
-rw-r--r--llvm/test/DebugInfo/PDB/obj-globalhash.test22
8 files changed, 270 insertions, 137 deletions
diff --git a/lld/test/COFF/Inputs/pdb-hashes-1.yaml b/lld/test/COFF/Inputs/pdb-hashes-1.yaml
index ba11ed1bf78..80670117489 100644
--- a/lld/test/COFF/Inputs/pdb-hashes-1.yaml
+++ b/lld/test/COFF/Inputs/pdb-hashes-1.yaml
@@ -6,7 +6,7 @@ sections:
- Name: .text
Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
Alignment: 16
- SectionData: 5589E55683EC188B450C8B4D088D55F4C745F8000000008B7508894DF089D18934248945ECE80000000083EC048D4DF4890C248945E8E80000000083C4185E5DC3
+ SectionData: 5589E55683EC188B450C8B4D08C745F8000000008B55088D75F4894DF089F18914248945ECE80000000083EC048D4DF4890C248945E8E80000000083C4185E5DC3
Relocations:
- VirtualAddress: 38
SymbolName: '??0Foo@NS@@QAE@H@Z'
@@ -33,7 +33,7 @@ sections:
- Name: '.debug$S'
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
Alignment: 4
- SectionData: 04000000F10000002F0000002D003C1101000000070006000000000000007017000000000000636C616E672076657273696F6E20362E302E30200000F50000008400000000000000000000004100000000000000080000000000000052000000070000000400000001000000400000000000000008000000000000007F0000000600040000000000030000003E000000000000000800000000000000BD0000000400040000000000040000003D000000000000000800000000000000FA0000000300080000000000F1000000960000002A00471100000000000000000000000041000000000000000000000003100000000000000000006D61696E000D003E1174000000010061726763001200451116000000080000001700000000002A000D003E11001000000100617267760012004511160000000C0000001700000000002A000A003E1109100000000066001200451116000000F4FFFFFF1700000000002A0002004F110000F200000030000000000000000000000041000000000000000300000024000000000000000300000017000000040000003000000005000000F1000000100000000E000811091000004E533A3A466F6F00F40000003000000001000000100165C9E387F88362A8EB2B49539DD5A65500002B00000010019303CF100D518DAF59C31DA01FEF4AFC0000F30000004801000000443A5C7372635C6C6C766D6275696C645C636C616E675C44656275675C7838365C6F626A312E63707000443A5C7372635C6C6C766D6275696C645C636C616E675C44656275675C7838365C6F626A2E6800245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2000245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D200024543020246562702034202B203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D200024543020246562702034202B203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D2024657369202454302038202D205E203D2000
+ SectionData: 04000000F10000002F0000002D003C110100000007000700000000000000581B000000000000636C616E672076657273696F6E20372E302E30200000F5000000840000000000000000000000410000000000000008000000000000004400000007000000040000000100000040000000000000000800000000000000710000000600040000000000030000003E000000000000000800000000000000AF0000000400040000000000040000003D000000000000000800000000000000EC0000000300080000000000F1000000960000002A00471100000000000000000000000041000000000000000000000003100000000000000000006D61696E000D003E1174000000010061726763001200451116000000080000001400000000002D000D003E11001000000100617267760012004511160000000C0000001400000000002D000A003E1109100000000066001200451116000000F4FFFFFF1400000000002D0002004F110000F200000030000000000000000000000041000000000000000300000024000000000000000400000014000000050000002D00000006000000F1000000100000000E000811091000004E533A3A466F6F00F4000000300000000100000010013469AC0DCAB9F1D7ED0FC4FA74E3983A0000240000001001C6036A3E7D29B0AB68FEE19A35B11BCD0000F30000003C01000000433A5C7372635C6C6C766D2D70726F6A6563745C6275696C645C6F626A312E63707000433A5C7372635C6C6C766D2D70726F6A6563745C6275696C645C6F626A2E6800245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2000245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D200024543020246562702034202B203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D200024543020246562702034202B203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D2024657369202454302038202D205E203D20000000
Subsections:
- !Symbols
Records:
@@ -41,15 +41,15 @@ sections:
Compile3Sym:
Flags: [ ]
Machine: Pentium3
- FrontendMajor: 6
+ FrontendMajor: 7
FrontendMinor: 0
FrontendBuild: 0
FrontendQFE: 0
- BackendMajor: 6000
+ BackendMajor: 7000
BackendMinor: 0
BackendBuild: 0
BackendQFE: 0
- Version: 'clang version 6.0.0 '
+ Version: 'clang version 7.0.0 '
- !FrameData
Frames:
- CodeSize: 65
@@ -99,16 +99,46 @@ sections:
Type: 116
Flags: [ IsParameter ]
VarName: argc
+ - Kind: S_DEFRANGE_REGISTER_REL
+ DefRangeRegisterRelSym:
+ Register: 22
+ Flags: 0
+ BasePointerOffset: 8
+ Range:
+ OffsetStart: 20
+ ISectStart: 0
+ Range: 45
+ Gaps:
- Kind: S_LOCAL
LocalSym:
Type: 4096
Flags: [ IsParameter ]
VarName: argv
+ - Kind: S_DEFRANGE_REGISTER_REL
+ DefRangeRegisterRelSym:
+ Register: 22
+ Flags: 0
+ BasePointerOffset: 12
+ Range:
+ OffsetStart: 20
+ ISectStart: 0
+ Range: 45
+ Gaps:
- Kind: S_LOCAL
LocalSym:
Type: 4105
Flags: [ ]
VarName: f
+ - Kind: S_DEFRANGE_REGISTER_REL
+ DefRangeRegisterRelSym:
+ Register: 22
+ Flags: 0
+ BasePointerOffset: -12
+ Range:
+ OffsetStart: 20
+ ISectStart: 0
+ Range: 45
+ Gaps:
- Kind: S_PROC_ID_END
ScopeEndSym:
- !Lines
@@ -117,20 +147,20 @@ sections:
RelocOffset: 0
RelocSegment: 0
Blocks:
- - FileName: 'D:\src\llvmbuild\clang\Debug\x86\obj1.cpp'
+ - FileName: 'C:\src\llvm-project\build\obj1.cpp'
Lines:
- Offset: 0
- LineStart: 3
- IsStatement: false
- EndDelta: 0
- - Offset: 23
LineStart: 4
IsStatement: false
EndDelta: 0
- - Offset: 48
+ - Offset: 20
LineStart: 5
IsStatement: false
EndDelta: 0
+ - Offset: 45
+ LineStart: 6
+ IsStatement: false
+ EndDelta: 0
Columns:
- !Symbols
Records:
@@ -140,20 +170,22 @@ sections:
UDTName: 'NS::Foo'
- !FileChecksums
Checksums:
- - FileName: 'D:\src\llvmbuild\clang\Debug\x86\obj1.cpp'
+ - FileName: 'C:\src\llvm-project\build\obj1.cpp'
Kind: MD5
- Checksum: 65C9E387F88362A8EB2B49539DD5A655
- - FileName: 'D:\src\llvmbuild\clang\Debug\x86\obj.h'
+ Checksum: 3469AC0DCAB9F1D7ED0FC4FA74E3983A
+ - FileName: 'C:\src\llvm-project\build\obj.h'
Kind: MD5
- Checksum: 9303CF100D518DAF59C31DA01FEF4AFC
+ Checksum: C6036A3E7D29B0AB68FEE19A35B11BCD
- !StringTable
Strings:
- - 'D:\src\llvmbuild\clang\Debug\x86\obj1.cpp'
- - 'D:\src\llvmbuild\clang\Debug\x86\obj.h'
+ - 'C:\src\llvm-project\build\obj1.cpp'
+ - 'C:\src\llvm-project\build\obj.h'
- '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = '
- '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = '
- '$T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = '
- '$T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $esi $T0 8 - ^ = '
+ - ''
+ - ''
Relocations:
- VirtualAddress: 68
SymbolName: _main
@@ -191,7 +223,7 @@ sections:
- Name: '.debug$T'
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
Alignment: 4
- SectionData: 040000000A000210700400000A8000000E0001120200000074000000001000000E0008107400000000000200011000001200011600000000021000006D61696E00F3F2F12A0005150000800200000000000000000000000000004E533A3A466F6F002E3F4155466F6F404E53404000F10A000210041000000A8000000A00011201000000740000001A0009100300000004100000051000000B00010006100000000000001A0003120D15030074000000000058001115030007100000466F6F002A0005150200000208100000000000000000000004004E533A3A466F6F002E3F4155466F6F404E53404000F12E00051600000000443A5C7372635C6C6C766D6275696C645C636C616E675C44656275675C7838365C6F626A2E6800F10E000616091000000A100000020000000E0002160410000007100000466F6F00
+ SectionData: 040000000A000210700400000A8000000E0001120200000074000000001000000E0008107400000000000200011000001200011600000000021000006D61696E00F3F2F12A0005150000800200000000000000000000000000004E533A3A466F6F002E3F4155466F6F404E53404000F10A000210041000000A8000000A00011201000000740000001A0009100300000004100000051000000B00010006100000000000001A0003120D15030074000000000058001115030007100000466F6F002A0005150200000208100000000000000000000004004E533A3A466F6F002E3F4155466F6F404E53404000F12600051600000000433A5C7372635C6C6C766D2D70726F6A6563745C6275696C645C6F626A2E68000E000616091000000A100000030000000E0002160410000007100000466F6F00
Types:
- Kind: LF_POINTER
Pointer:
@@ -266,12 +298,12 @@ sections:
- Kind: LF_STRING_ID
StringId:
Id: 0
- String: 'D:\src\llvmbuild\clang\Debug\x86\obj.h'
+ String: 'C:\src\llvm-project\build\obj.h'
- Kind: LF_UDT_SRC_LINE
UdtSourceLine:
UDT: 4105
SourceFile: 4106
- LineNumber: 2
+ LineNumber: 3
- Kind: LF_MFUNC_ID
MemberFuncId:
ClassType: 4100
@@ -280,28 +312,28 @@ sections:
- Name: '.debug$H'
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
Alignment: 4
- SectionData: C5C93301000000009E56666824DC4B12E25261D4E09E6E9DA0F4EE31FDEC3D2D96287486127C66070B248ED52E421F55074AE5CC2D68AF9F0A3BEF23993968F7FD82CA84BF0439C1A64C9070C6A6ADB0A34D21DAD0FFC3E99E616EF06A14EA74A2420F9062A1FB04917E5975E3A50EABE5E8FE3945468547C19DC681D0BFB3B797DD91CA4D7F1953C314442D5549419E78044E38A0BF16BFFAA5EE9C0103E7DBFE9941E63379C0B0C0A9021B711ACC4F67008974EBF441031BDD653F6935DFF3112C6A5346EF2AC94B9B7EB56EF55CFA0AF6C1846743F43D846BB19517E12E8873BBA90CC41DD1BEAC89CBA8897AC1BA46762E2557A82D894CEAE81AEF8680D723D403D9A4481F0E28683A98
+ SectionData: C5C9330100000000624A7FEE7323656B7F1C5A63800309EE1ED8BB5B0EB2C87AD629AA9E5C98B7A3ED69DB1355707DF1624E463ACE08649D0FC35F163E20CC43089ADCA64B712C03EDA4CB88537EBAE4005A09006A9FB389476700689419512EFB395F1A23ADA4E788EB7A90DA146E89F004E6185E87867C58B4AC836CBBD1301D1BC1BDEEB7F3A86BB7ECCF6632585CDC7606E4CCAB0C6E6E190E3091E4290AFF7BA25E9E8209892CA91CCBF55A49FCB303335DC553B426E3AC635C1883F35475E9A4A12ED6396BC795E5D801DB74B371743A7A9E69529643FB49E2201DD99ECA4F72B2213D30B9768BAE6EB7C1150155B4421347349E771F26985B869638BAA4FE40A80C07611AAF09B6A4
GlobalHashes:
Version: 0
HashAlgorithm: 0
HashValues:
- - 9E56666824DC4B12E25261D4E09E6E9DA0F4EE31
- - FDEC3D2D96287486127C66070B248ED52E421F55
- - 074AE5CC2D68AF9F0A3BEF23993968F7FD82CA84
- - BF0439C1A64C9070C6A6ADB0A34D21DAD0FFC3E9
- - 9E616EF06A14EA74A2420F9062A1FB04917E5975
- - E3A50EABE5E8FE3945468547C19DC681D0BFB3B7
- - 97DD91CA4D7F1953C314442D5549419E78044E38
- - A0BF16BFFAA5EE9C0103E7DBFE9941E63379C0B0
- - C0A9021B711ACC4F67008974EBF441031BDD653F
- - 6935DFF3112C6A5346EF2AC94B9B7EB56EF55CFA
- - 0AF6C1846743F43D846BB19517E12E8873BBA90C
- - C41DD1BEAC89CBA8897AC1BA46762E2557A82D89
- - 4CEAE81AEF8680D723D403D9A4481F0E28683A98
+ - 624A7FEE7323656B7F1C5A63800309EE1ED8BB5B
+ - 0EB2C87AD629AA9E5C98B7A3ED69DB1355707DF1
+ - 624E463ACE08649D0FC35F163E20CC43089ADCA6
+ - 4B712C03EDA4CB88537EBAE4005A09006A9FB389
+ - 476700689419512EFB395F1A23ADA4E788EB7A90
+ - DA146E89F004E6185E87867C58B4AC836CBBD130
+ - 1D1BC1BDEEB7F3A86BB7ECCF6632585CDC7606E4
+ - CCAB0C6E6E190E3091E4290AFF7BA25E9E820989
+ - 2CA91CCBF55A49FCB303335DC553B426E3AC635C
+ - 1883F35475E9A4A12ED6396BC795E5D801DB74B3
+ - 71743A7A9E69529643FB49E2201DD99ECA4F72B2
+ - 213D30B9768BAE6EB7C1150155B4421347349E77
+ - 1F26985B869638BAA4FE40A80C07611AAF09B6A4
- Name: '.debug$S'
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
Alignment: 4
- SectionData: 04000000F500000064000000000000000000000020000000000000000400000000000000520000000600000004000000010000001F0000000000000004000000000000007F0000000500040000000000030000001D000000000000000400000000000000BD0000000300040000000000F10000007B000000320047110000000000000000000000002000000000000000000000000C100000000000000000004E533A3A466F6F3A3A466F6F000D003E1105100000010074686973001200451116000000FCFFFFFF0F000000000011000A003E1174000000010078001200451116000000080000000F0000000000110002004F1100F2000000200000000000000000000000200000001800000001000000140000000000000003000000
+ SectionData: 04000000F500000064000000000000000000000020000000000000000400000000000000440000000600000004000000010000001F000000000000000400000000000000710000000500040000000000030000001D000000000000000400000000000000AF0000000300040000000000F10000007B000000320047110000000000000000000000002000000000000000000000000C100000000000000000004E533A3A466F6F3A3A466F6F000D003E1105100000010074686973001200451116000000FCFFFFFF0F000000000011000A003E1174000000010078001200451116000000080000000F0000000000110002004F1100F2000000200000000000000000000000200000001800000001000000140000000000000004000000
Subsections:
- !FrameData
Frames:
@@ -344,11 +376,31 @@ sections:
Type: 4101
Flags: [ IsParameter ]
VarName: this
+ - Kind: S_DEFRANGE_REGISTER_REL
+ DefRangeRegisterRelSym:
+ Register: 22
+ Flags: 0
+ BasePointerOffset: -4
+ Range:
+ OffsetStart: 15
+ ISectStart: 0
+ Range: 17
+ Gaps:
- Kind: S_LOCAL
LocalSym:
Type: 116
Flags: [ IsParameter ]
VarName: x
+ - Kind: S_DEFRANGE_REGISTER_REL
+ DefRangeRegisterRelSym:
+ Register: 22
+ Flags: 0
+ BasePointerOffset: 8
+ Range:
+ OffsetStart: 15
+ ISectStart: 0
+ Range: 17
+ Gaps:
- Kind: S_PROC_ID_END
ScopeEndSym:
- !Lines
@@ -357,10 +409,10 @@ sections:
RelocOffset: 0
RelocSegment: 0
Blocks:
- - FileName: 'D:\src\llvmbuild\clang\Debug\x86\obj.h'
+ - FileName: 'C:\src\llvm-project\build\obj.h'
Lines:
- Offset: 0
- LineStart: 3
+ LineStart: 4
IsStatement: false
EndDelta: 0
Columns:
@@ -403,7 +455,7 @@ symbols:
Length: 65
NumberOfRelocations: 2
NumberOfLinenumbers: 0
- CheckSum: 4176946275
+ CheckSum: 1827148029
Number: 1
- Name: .data
Value: 0
@@ -467,10 +519,10 @@ symbols:
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
SectionDefinition:
- Length: 832
+ Length: 820
NumberOfRelocations: 11
NumberOfLinenumbers: 0
- CheckSum: 4106171226
+ CheckSum: 3821266521
Number: 6
- Name: '.debug$S'
Value: 0
@@ -482,7 +534,7 @@ symbols:
Length: 284
NumberOfRelocations: 9
NumberOfLinenumbers: 0
- CheckSum: 1378739251
+ CheckSum: 112499332
Number: 4
Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE
- Name: '.debug$T'
@@ -492,10 +544,10 @@ symbols:
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
SectionDefinition:
- Length: 316
+ Length: 308
NumberOfRelocations: 0
NumberOfLinenumbers: 0
- CheckSum: 3343977630
+ CheckSum: 2028313836
Number: 7
- Name: '.debug$H'
Value: 0
@@ -507,7 +559,7 @@ symbols:
Length: 268
NumberOfRelocations: 0
NumberOfLinenumbers: 0
- CheckSum: 3965031229
+ CheckSum: 1115012461
Number: 8
- Name: '@feat.00'
Value: 1
diff --git a/lld/test/COFF/Inputs/pdb-hashes-2-missing.yaml b/lld/test/COFF/Inputs/pdb-hashes-2-missing.yaml
index 5b94d7fe592..aa715ee3104 100644
--- a/lld/test/COFF/Inputs/pdb-hashes-2-missing.yaml
+++ b/lld/test/COFF/Inputs/pdb-hashes-2-missing.yaml
@@ -22,7 +22,7 @@ sections:
- Name: '.debug$S'
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
Alignment: 4
- SectionData: 04000000F10000002F0000002D003C1101000000070006000000000000007017000000000000636C616E672076657273696F6E20362E302E30200000F5000000640000000000000000000000190000000000000004000000000000002B000000040000000400000001000000180000000000000004000000000000005800000003000400000000000300000016000000000000000400000000000000960000000100040000000000F1000000540000002E0047110000000000000000000000001900000000000000000000000D100000000000000000004E533A3A66756E63000A003E110310000001006600120045111600000008000000070000000000120002004F11F20000002800000000000000000000001900000000000000020000001C00000000000000030000000700000004000000F1000000100000000E0008110A1000004E533A3A466F6F00F40000001800000001000000100159DFAC75D18675AED1AD169FE316317E0000F3000000D400000000443A5C7372635C6C6C766D6275696C645C636C616E675C44656275675C7838365C6F626A322E63707000245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2000245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D200024543020246562702034202B203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D200000
+ SectionData: 04000000F10000002F0000002D003C110100000007000700000000000000581B000000000000636C616E672076657273696F6E20372E302E30200000F500000064000000000000000000000019000000000000000400000000000000240000000400000004000000010000001800000000000000040000000000000051000000030004000000000003000000160000000000000004000000000000008F0000000100040000000000F1000000540000002E0047110000000000000000000000001900000000000000000000000D100000000000000000004E533A3A66756E63000A003E110310000001006600120045111600000008000000070000000000120002004F11F20000002800000000000000000000001900000000000000020000001C00000000000000040000000700000005000000F1000000100000000E0008110A1000004E533A3A466F6F00F400000018000000010000001001CEC8BDE31D126291115B63CE08A5D1360000F3000000CC00000000433A5C7372635C6C6C766D2D70726F6A6563745C6275696C645C6F626A322E63707000245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2000245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D200024543020246562702034202B203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D2000
Subsections:
- !Symbols
Records:
@@ -30,15 +30,15 @@ sections:
Compile3Sym:
Flags: [ ]
Machine: Pentium3
- FrontendMajor: 6
+ FrontendMajor: 7
FrontendMinor: 0
FrontendBuild: 0
FrontendQFE: 0
- BackendMajor: 6000
+ BackendMajor: 7000
BackendMinor: 0
BackendBuild: 0
BackendQFE: 0
- Version: 'clang version 6.0.0 '
+ Version: 'clang version 7.0.0 '
- !FrameData
Frames:
- CodeSize: 25
@@ -80,6 +80,16 @@ sections:
Type: 4099
Flags: [ IsParameter ]
VarName: f
+ - Kind: S_DEFRANGE_REGISTER_REL
+ DefRangeRegisterRelSym:
+ Register: 22
+ Flags: 0
+ BasePointerOffset: 8
+ Range:
+ OffsetStart: 7
+ ISectStart: 0
+ Range: 18
+ Gaps:
- Kind: S_PROC_ID_END
ScopeEndSym:
- !Lines
@@ -88,14 +98,14 @@ sections:
RelocOffset: 0
RelocSegment: 0
Blocks:
- - FileName: 'D:\src\llvmbuild\clang\Debug\x86\obj2.cpp'
+ - FileName: 'C:\src\llvm-project\build\obj2.cpp'
Lines:
- Offset: 0
- LineStart: 3
+ LineStart: 4
IsStatement: false
EndDelta: 0
- Offset: 7
- LineStart: 4
+ LineStart: 5
IsStatement: false
EndDelta: 0
Columns:
@@ -107,16 +117,15 @@ sections:
UDTName: 'NS::Foo'
- !FileChecksums
Checksums:
- - FileName: 'D:\src\llvmbuild\clang\Debug\x86\obj2.cpp'
+ - FileName: 'C:\src\llvm-project\build\obj2.cpp'
Kind: MD5
- Checksum: 59DFAC75D18675AED1AD169FE316317E
+ Checksum: CEC8BDE31D126291115B63CE08A5D136
- !StringTable
Strings:
- - 'D:\src\llvmbuild\clang\Debug\x86\obj2.cpp'
+ - 'C:\src\llvm-project\build\obj2.cpp'
- '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = '
- '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = '
- '$T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = '
- - ''
Relocations:
- VirtualAddress: 68
SymbolName: '?func@NS@@YAHABUFoo@1@@Z'
@@ -142,7 +151,7 @@ sections:
- Name: '.debug$T'
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
Alignment: 4
- SectionData: 040000000A000516000000004E5300F12A0005150000800200000000000000000000000000004E533A3A466F6F002E3F4155466F6F404E53404000F10A000110011000000100F2F10A000210021000002A8000000A00011201000000031000000E0008107400000000000100041000000A000210011000000A8000000A00011201000000740000001A0009100300000001100000061000000B00010007100000000000001A0003120D15030074000000000058001115030008100000466F6F002A0005150200000209100000000000000000000004004E533A3A466F6F002E3F4155466F6F404E53404000F12E00051600000000443A5C7372635C6C6C766D6275696C645C636C616E675C44656275675C7838365C6F626A2E6800F10E0006160A1000000B1000000200000012000116001000000510000066756E6300F3F2F1
+ SectionData: 040000000A000516000000004E5300F12A0005150000800200000000000000000000000000004E533A3A466F6F002E3F4155466F6F404E53404000F10A000110011000000100F2F10A000210021000002A8000000A00011201000000031000000E0008107400000000000100041000000A000210011000000A8000000A00011201000000740000001A0009100300000001100000061000000B00010007100000000000001A0003120D15030074000000000058001115030008100000466F6F002A0005150200000209100000000000000000000004004E533A3A466F6F002E3F4155466F6F404E53404000F12600051600000000433A5C7372635C6C6C766D2D70726F6A6563745C6275696C645C6F626A2E68000E0006160A1000000B1000000300000012000116001000000510000066756E6300F3F2F1
Types:
- Kind: LF_STRING_ID
StringId:
@@ -220,12 +229,12 @@ sections:
- Kind: LF_STRING_ID
StringId:
Id: 0
- String: 'D:\src\llvmbuild\clang\Debug\x86\obj.h'
+ String: 'C:\src\llvm-project\build\obj.h'
- Kind: LF_UDT_SRC_LINE
UdtSourceLine:
UDT: 4106
SourceFile: 4107
- LineNumber: 2
+ LineNumber: 3
- Kind: LF_FUNC_ID
FuncId:
ParentScope: 4096
@@ -287,10 +296,10 @@ symbols:
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
SectionDefinition:
- Length: 584
+ Length: 576
NumberOfRelocations: 7
NumberOfLinenumbers: 0
- CheckSum: 2847177244
+ CheckSum: 1275848292
Number: 5
- Name: '.debug$T'
Value: 0
@@ -299,10 +308,10 @@ symbols:
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
SectionDefinition:
- Length: 320
+ Length: 312
NumberOfRelocations: 0
NumberOfLinenumbers: 0
- CheckSum: 2684556216
+ CheckSum: 3001708198
Number: 6
- Name: '@feat.00'
Value: 1
diff --git a/lld/test/COFF/Inputs/pdb-hashes-2.yaml b/lld/test/COFF/Inputs/pdb-hashes-2.yaml
index 46676c485bc..597d360ef7e 100644
--- a/lld/test/COFF/Inputs/pdb-hashes-2.yaml
+++ b/lld/test/COFF/Inputs/pdb-hashes-2.yaml
@@ -22,7 +22,7 @@ sections:
- Name: '.debug$S'
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
Alignment: 4
- SectionData: 04000000F10000002F0000002D003C1101000000070006000000000000007017000000000000636C616E672076657273696F6E20362E302E30200000F5000000640000000000000000000000190000000000000004000000000000002B000000040000000400000001000000180000000000000004000000000000005800000003000400000000000300000016000000000000000400000000000000960000000100040000000000F1000000540000002E0047110000000000000000000000001900000000000000000000000D100000000000000000004E533A3A66756E63000A003E110310000001006600120045111600000008000000070000000000120002004F11F20000002800000000000000000000001900000000000000020000001C00000000000000030000000700000004000000F1000000100000000E0008110A1000004E533A3A466F6F00F40000001800000001000000100159DFAC75D18675AED1AD169FE316317E0000F3000000D400000000443A5C7372635C6C6C766D6275696C645C636C616E675C44656275675C7838365C6F626A322E63707000245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2000245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D200024543020246562702034202B203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D200000
+ SectionData: 04000000F10000002F0000002D003C110100000007000700000000000000581B000000000000636C616E672076657273696F6E20372E302E30200000F500000064000000000000000000000019000000000000000400000000000000240000000400000004000000010000001800000000000000040000000000000051000000030004000000000003000000160000000000000004000000000000008F0000000100040000000000F1000000540000002E0047110000000000000000000000001900000000000000000000000D100000000000000000004E533A3A66756E63000A003E110310000001006600120045111600000008000000070000000000120002004F11F20000002800000000000000000000001900000000000000020000001C00000000000000040000000700000005000000F1000000100000000E0008110A1000004E533A3A466F6F00F400000018000000010000001001CEC8BDE31D126291115B63CE08A5D1360000F3000000CC00000000433A5C7372635C6C6C766D2D70726F6A6563745C6275696C645C6F626A322E63707000245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2000245430202E7261536561726368203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D200024543020246562702034202B203D202465697020245430205E203D2024657370202454302034202B203D2024656270202454302034202D205E203D2000
Subsections:
- !Symbols
Records:
@@ -30,15 +30,15 @@ sections:
Compile3Sym:
Flags: [ ]
Machine: Pentium3
- FrontendMajor: 6
+ FrontendMajor: 7
FrontendMinor: 0
FrontendBuild: 0
FrontendQFE: 0
- BackendMajor: 6000
+ BackendMajor: 7000
BackendMinor: 0
BackendBuild: 0
BackendQFE: 0
- Version: 'clang version 6.0.0 '
+ Version: 'clang version 7.0.0 '
- !FrameData
Frames:
- CodeSize: 25
@@ -80,6 +80,16 @@ sections:
Type: 4099
Flags: [ IsParameter ]
VarName: f
+ - Kind: S_DEFRANGE_REGISTER_REL
+ DefRangeRegisterRelSym:
+ Register: 22
+ Flags: 0
+ BasePointerOffset: 8
+ Range:
+ OffsetStart: 7
+ ISectStart: 0
+ Range: 18
+ Gaps:
- Kind: S_PROC_ID_END
ScopeEndSym:
- !Lines
@@ -88,14 +98,14 @@ sections:
RelocOffset: 0
RelocSegment: 0
Blocks:
- - FileName: 'D:\src\llvmbuild\clang\Debug\x86\obj2.cpp'
+ - FileName: 'C:\src\llvm-project\build\obj2.cpp'
Lines:
- Offset: 0
- LineStart: 3
+ LineStart: 4
IsStatement: false
EndDelta: 0
- Offset: 7
- LineStart: 4
+ LineStart: 5
IsStatement: false
EndDelta: 0
Columns:
@@ -107,16 +117,15 @@ sections:
UDTName: 'NS::Foo'
- !FileChecksums
Checksums:
- - FileName: 'D:\src\llvmbuild\clang\Debug\x86\obj2.cpp'
+ - FileName: 'C:\src\llvm-project\build\obj2.cpp'
Kind: MD5
- Checksum: 59DFAC75D18675AED1AD169FE316317E
+ Checksum: CEC8BDE31D126291115B63CE08A5D136
- !StringTable
Strings:
- - 'D:\src\llvmbuild\clang\Debug\x86\obj2.cpp'
+ - 'C:\src\llvm-project\build\obj2.cpp'
- '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = '
- '$T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = '
- '$T0 $ebp 4 + = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = '
- - ''
Relocations:
- VirtualAddress: 68
SymbolName: '?func@NS@@YAHABUFoo@1@@Z'
@@ -142,7 +151,7 @@ sections:
- Name: '.debug$T'
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
Alignment: 4
- SectionData: 040000000A000516000000004E5300F12A0005150000800200000000000000000000000000004E533A3A466F6F002E3F4155466F6F404E53404000F10A000110011000000100F2F10A000210021000002A8000000A00011201000000031000000E0008107400000000000100041000000A000210011000000A8000000A00011201000000740000001A0009100300000001100000061000000B00010007100000000000001A0003120D15030074000000000058001115030008100000466F6F002A0005150200000209100000000000000000000004004E533A3A466F6F002E3F4155466F6F404E53404000F12E00051600000000443A5C7372635C6C6C766D6275696C645C636C616E675C44656275675C7838365C6F626A2E6800F10E0006160A1000000B1000000200000012000116001000000510000066756E6300F3F2F1
+ SectionData: 040000000A000516000000004E5300F12A0005150000800200000000000000000000000000004E533A3A466F6F002E3F4155466F6F404E53404000F10A000110011000000100F2F10A000210021000002A8000000A00011201000000031000000E0008107400000000000100041000000A000210011000000A8000000A00011201000000740000001A0009100300000001100000061000000B00010007100000000000001A0003120D15030074000000000058001115030008100000466F6F002A0005150200000209100000000000000000000004004E533A3A466F6F002E3F4155466F6F404E53404000F12600051600000000433A5C7372635C6C6C766D2D70726F6A6563745C6275696C645C6F626A2E68000E0006160A1000000B1000000300000012000116001000000510000066756E6300F3F2F1
Types:
- Kind: LF_STRING_ID
StringId:
@@ -220,12 +229,12 @@ sections:
- Kind: LF_STRING_ID
StringId:
Id: 0
- String: 'D:\src\llvmbuild\clang\Debug\x86\obj.h'
+ String: 'C:\src\llvm-project\build\obj.h'
- Kind: LF_UDT_SRC_LINE
UdtSourceLine:
UDT: 4106
SourceFile: 4107
- LineNumber: 2
+ LineNumber: 3
- Kind: LF_FUNC_ID
FuncId:
ParentScope: 4096
@@ -234,25 +243,25 @@ sections:
- Name: '.debug$H'
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
Alignment: 4
- SectionData: C5C9330100000000EC145CD76AEFE74E78880D531132B3BB8FFACEF79E616EF06A14EA74A2420F9062A1FB04917E59759949E334BA18509ED692F3C65CE242D8450EBC78B81B63AF8316DC324562EB9F0D4A0D708E8A25C263DB05943C19B84A36719E1E414DDA3EDBDF005322238D70F9058EEDC5C50EF11BC849618B51FD89E3A50EABE5E8FE3945468547C19DC681D0BFB3B797DD91CA4D7F1953C314442D5549419E78044E38A0BF16BFFAA5EE9C0103E7DBFE9941E63379C0B0C0A9021B711ACC4F67008974EBF441031BDD653F6935DFF3112C6A5346EF2AC94B9B7EB56EF55CFA0AF6C1846743F43D846BB19517E12E8873BBA90CC41DD1BEAC89CBA8897AC1BA46762E2557A82D89DCBC783AF285D9DBB672F67A81E36906B2038B57
+ SectionData: C5C9330100000000D6242F1ED02B98E973DCA3334A061540B751965F476700689419512EFB395F1A23ADA4E788EB7A90DC6D1D00D355FEFEDDE4C68641D053622767E1526FD137C1525BDF80D746B3B9C314372C738054FC95D47092AC4D20BAC80E167B185331D42B388FB966A52D778FFF3829DC925A33C5CA6DD9A3EBA965DA146E89F004E6185E87867C58B4AC836CBBD1301D1BC1BDEEB7F3A86BB7ECCF6632585CDC7606E4CCAB0C6E6E190E3091E4290AFF7BA25E9E8209892CA91CCBF55A49FCB303335DC553B426E3AC635C1883F35475E9A4A12ED6396BC795E5D801DB74B371743A7A9E69529643FB49E2201DD99ECA4F72B2213D30B9768BAE6EB7C1150155B4421347349E77B1F380BB197127A54D0DB470E57DF96B15066C78
GlobalHashes:
Version: 0
HashAlgorithm: 0
HashValues:
- - EC145CD76AEFE74E78880D531132B3BB8FFACEF7
- - 9E616EF06A14EA74A2420F9062A1FB04917E5975
- - 9949E334BA18509ED692F3C65CE242D8450EBC78
- - B81B63AF8316DC324562EB9F0D4A0D708E8A25C2
- - 63DB05943C19B84A36719E1E414DDA3EDBDF0053
- - 22238D70F9058EEDC5C50EF11BC849618B51FD89
- - E3A50EABE5E8FE3945468547C19DC681D0BFB3B7
- - 97DD91CA4D7F1953C314442D5549419E78044E38
- - A0BF16BFFAA5EE9C0103E7DBFE9941E63379C0B0
- - C0A9021B711ACC4F67008974EBF441031BDD653F
- - 6935DFF3112C6A5346EF2AC94B9B7EB56EF55CFA
- - 0AF6C1846743F43D846BB19517E12E8873BBA90C
- - C41DD1BEAC89CBA8897AC1BA46762E2557A82D89
- - DCBC783AF285D9DBB672F67A81E36906B2038B57
+ - D6242F1ED02B98E973DCA3334A061540B751965F
+ - 476700689419512EFB395F1A23ADA4E788EB7A90
+ - DC6D1D00D355FEFEDDE4C68641D053622767E152
+ - 6FD137C1525BDF80D746B3B9C314372C738054FC
+ - 95D47092AC4D20BAC80E167B185331D42B388FB9
+ - 66A52D778FFF3829DC925A33C5CA6DD9A3EBA965
+ - DA146E89F004E6185E87867C58B4AC836CBBD130
+ - 1D1BC1BDEEB7F3A86BB7ECCF6632585CDC7606E4
+ - CCAB0C6E6E190E3091E4290AFF7BA25E9E820989
+ - 2CA91CCBF55A49FCB303335DC553B426E3AC635C
+ - 1883F35475E9A4A12ED6396BC795E5D801DB74B3
+ - 71743A7A9E69529643FB49E2201DD99ECA4F72B2
+ - 213D30B9768BAE6EB7C1150155B4421347349E77
+ - B1F380BB197127A54D0DB470E57DF96B15066C78
symbols:
- Name: .text
Value: 0
@@ -309,10 +318,10 @@ symbols:
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
SectionDefinition:
- Length: 584
+ Length: 576
NumberOfRelocations: 7
NumberOfLinenumbers: 0
- CheckSum: 2847177244
+ CheckSum: 1275848292
Number: 5
- Name: '.debug$T'
Value: 0
@@ -321,10 +330,10 @@ symbols:
ComplexType: IMAGE_SYM_DTYPE_NULL
StorageClass: IMAGE_SYM_CLASS_STATIC
SectionDefinition:
- Length: 320
+ Length: 312
NumberOfRelocations: 0
NumberOfLinenumbers: 0
- CheckSum: 2684556216
+ CheckSum: 3001708198
Number: 6
- Name: '.debug$H'
Value: 0
@@ -336,7 +345,7 @@ symbols:
Length: 288
NumberOfRelocations: 0
NumberOfLinenumbers: 0
- CheckSum: 2348181452
+ CheckSum: 3809286526
Number: 7
- Name: '@feat.00'
Value: 1
diff --git a/lld/test/COFF/pdb-global-hashes.test b/lld/test/COFF/pdb-global-hashes.test
index b47e4382653..ad2cbc3dc25 100644
--- a/lld/test/COFF/pdb-global-hashes.test
+++ b/lld/test/COFF/pdb-global-hashes.test
@@ -83,9 +83,9 @@ CHECK-NEXT: ============================================================
CHECK-NEXT: Showing 6 records
CHECK-NEXT: 0x1000 | LF_FUNC_ID [size = 20]
CHECK-NEXT: name = main, type = 0x1002, parent scope = <no type>
-CHECK-NEXT: 0x1001 | LF_STRING_ID [size = 48] ID: <no type>, String: D:\src\llvmbuild\clang\Debug\x86\obj.h
+CHECK-NEXT: 0x1001 | LF_STRING_ID [size = {{.*}}] ID: <no type>, String: {{.*}}obj.h
CHECK-NEXT: 0x1002 | LF_UDT_SRC_LINE [size = 16]
-CHECK-NEXT: udt = 0x1008, file = 4097, line = 2
+CHECK-NEXT: udt = 0x1008, file = 4097, line = 3
CHECK-NEXT: 0x1003 | LF_MFUNC_ID [size = 16]
CHECK-NEXT: name = Foo, type = 0x1006, class type = 0x1003
CHECK-NEXT: 0x1004 | LF_STRING_ID [size = 12] ID: <no type>, String: NS
diff --git a/llvm/lib/DebugInfo/CodeView/TypeHashing.cpp b/llvm/lib/DebugInfo/CodeView/TypeHashing.cpp
index f5b28b2a207..c2f8cd5466a 100644
--- a/llvm/lib/DebugInfo/CodeView/TypeHashing.cpp
+++ b/llvm/lib/DebugInfo/CodeView/TypeHashing.cpp
@@ -39,6 +39,7 @@ GloballyHashedType::hashType(ArrayRef<uint8_t> RecordData,
SHA1 S;
S.init();
uint32_t Off = 0;
+ S.update(RecordData.take_front(sizeof(RecordPrefix)));
RecordData = RecordData.drop_front(sizeof(RecordPrefix));
for (const auto &Ref : Refs) {
// Hash any data that comes before this TiRef.
diff --git a/llvm/test/DebugInfo/COFF/global-type-hashes.ll b/llvm/test/DebugInfo/COFF/global-type-hashes.ll
index 2595c387fc9..99006a34543 100644
--- a/llvm/test/DebugInfo/COFF/global-type-hashes.ll
+++ b/llvm/test/DebugInfo/COFF/global-type-hashes.ll
@@ -275,23 +275,22 @@ attributes #2 = { noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-ma
; YAML: Version: 0
; YAML: HashAlgorithm: 0
; YAML: HashValues:
-; YAML: - 9E56666824DC4B12E25261D4E09E6E9DA0F4EE31
-; YAML: - FDEC3D2D96287486127C66070B248ED52E421F55
-; YAML: - 074AE5CC2D68AF9F0A3BEF23993968F7FD82CA84
-; YAML: - BF0439C1A64C9070C6A6ADB0A34D21DAD0FFC3E9
-; YAML: - CF1B3AD4A96BA628E6556FD28A222FBBEBBE140E
-; YAML: - EC50195BFE148C0DC6A87A59D49CA1D9B146DB86
-; YAML: - 123C8BA63AD23386897AB6D814A9932F03846156
-; YAML: - 0F135243878289B83835BC2DB9EE25A1D4D0DA2B
-; YAML: - 9069CA78E7450A285173431B3E52C5C25299E473
-; YAML: - ADA6E11350E9F2069D4689E3646C90D67B28DA62
-; YAML: - BD535FA9877A4DD123840AF849F3B0110EEB1D7A
-; YAML: - 8044F70193FE40B71867158C5E50F0467485FA99
-; YAML: - 558606D57A76D125B705FC6DD18EEE3C1C0C4C09
-; YAML: - A64A018D9EB1EB8015917925662C8508D81CDA68
-; YAML: - 51E89AD9992AC6F11F9E3F1665F41C53BDA8AFC4
-; YAML: - 4F1C3BCA73099EF3466AAC99CC4951767DF890F5
-; ...
+; YAML: - 624A7FEE7323656B7F1C5A63800309EE1ED8BB5B
+; YAML: - 0EB2C87AD629AA9E5C98B7A3ED69DB1355707DF1
+; YAML: - 624E463ACE08649D0FC35F163E20CC43089ADCA6
+; YAML: - 4B712C03EDA4CB88537EBAE4005A09006A9FB389
+; YAML: - 59EC21C3D8D594FF77854ABAC324F82D24D22283
+; YAML: - DA76AFB7C767EC00BAA171FEFAA2801D95716C22
+; YAML: - 4927143F1D91A64983DDA6B6DDE23757322DB7C3
+; YAML: - DFDF871AD3841199ACD961EA57243C7A1305B4DD
+; YAML: - 20015FA1AD3D0FF3546B4428D341E2F9BE57A1C7
+; YAML: - 8DC9D77BACDD53AAE3A5AC8F41C43D3C3122DCBC
+; YAML: - 77A85205D34B9C26802849355086C2937E3F45D8
+; YAML: - 4AEF9C1D1509C0FFA2A02F86B3C28FB0F254096C
+; YAML: - 83B03F51A4BABAE1E8B560B40634944401BCC520
+; YAML: - A82772A0D760F3EB5FC7A3022A6D376F5D7A92E2
+; YAML: - 235B46C1A3E3FB71D89ED6085E8B8D38632AACD6
+; YAML: - D52F03DB055DE93F19066E93FB3BA86C5A652429
; ASM: .section .debug$H,"dr"
@@ -299,14 +298,14 @@ attributes #2 = { noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-ma
; ASM-NEXT: .long 20171205 # Magic
; ASM-NEXT: .short 0 # Section Version
; ASM-NEXT: .short 0 # Hash Algorithm
-; ASM-NEXT: .byte 0x9e, 0x56, 0x66, 0x68 # 0x1000 [9E56666824DC4B12E25261D4E09E6E9DA0F4EE31]
-; ASM-NEXT: .byte 0x24, 0xdc, 0x4b, 0x12
-; ASM-NEXT: .byte 0xe2, 0x52, 0x61, 0xd4
-; ASM-NEXT: .byte 0xe0, 0x9e, 0x6e, 0x9d
-; ASM-NEXT: .byte 0xa0, 0xf4, 0xee, 0x31
-; ASM-NEXT: .byte 0xfd, 0xec, 0x3d, 0x2d # 0x1001 [FDEC3D2D96287486127C66070B248ED52E421F55]
-; ASM-NEXT: .byte 0x96, 0x28, 0x74, 0x86
-; ASM-NEXT: .byte 0x12, 0x7c, 0x66, 0x07
-; ASM-NEXT: .byte 0x0b, 0x24, 0x8e, 0xd5
-; ASM-NEXT: .byte 0x2e, 0x42, 0x1f, 0x55
-; ASM-NEXT: .byte 0x07, 0x4a, 0xe5, 0xcc # 0x1002 [074AE5CC2D68AF9F0A3BEF23993968F7FD82CA84]
+; ASM-NEXT: .byte 0x62, 0x4a, 0x7f, 0xee # 0x1000 [624A7FEE7323656B7F1C5A63800309EE1ED8BB5B]
+; ASM-NEXT: .byte 0x73, 0x23, 0x65, 0x6b
+; ASM-NEXT: .byte 0x7f, 0x1c, 0x5a, 0x63
+; ASM-NEXT: .byte 0x80, 0x03, 0x09, 0xee
+; ASM-NEXT: .byte 0x1e, 0xd8, 0xbb, 0x5b
+; ASM-NEXT: .byte 0x0e, 0xb2, 0xc8, 0x7a # 0x1001 [0EB2C87AD629AA9E5C98B7A3ED69DB1355707DF1]
+; ASM-NEXT: .byte 0xd6, 0x29, 0xaa, 0x9e
+; ASM-NEXT: .byte 0x5c, 0x98, 0xb7, 0xa3
+; ASM-NEXT: .byte 0xed, 0x69, 0xdb, 0x13
+; ASM-NEXT: .byte 0x55, 0x70, 0x7d, 0xf1
+; ASM-NEXT: .byte 0x62, 0x4e, 0x46, 0x3a # 0x1002 [624E463ACE08649D0FC35F163E20CC43089ADCA6]
diff --git a/llvm/test/DebugInfo/COFF/pr37492.ll b/llvm/test/DebugInfo/COFF/pr37492.ll
new file mode 100644
index 00000000000..7edff440b67
--- /dev/null
+++ b/llvm/test/DebugInfo/COFF/pr37492.ll
@@ -0,0 +1,63 @@
+; RUN: llc < %s | FileCheck %s
+
+; Original C++ source:
+; struct Bits {
+; unsigned char b0 : 1;
+; unsigned char b1 : 1;
+; } bits;
+; const unsigned char *p_const;
+
+; In PR37492, there was an issue in global type hashing where we forgot to
+; consider the prefix portion of a type record when hashing it. This lead to a
+; 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: # }
+
+; ModuleID = 't.cpp'
+source_filename = "t.cpp"
+target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.13.26131"
+
+%struct.Bits = type { i8 }
+
+@"?bits@@3UBits@@A" = dso_local global %struct.Bits zeroinitializer, align 1, !dbg !0
+@"?p_const@@3PEBEEB" = dso_local global i8* null, align 8, !dbg !6
+
+!llvm.dbg.cu = !{!2}
+!llvm.module.flags = !{!15, !16, !17, !18}
+!llvm.ident = !{!19}
+
+!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
+!1 = distinct !DIGlobalVariable(name: "bits", linkageName: "?bits@@3UBits@@A", scope: !2, file: !3, line: 4, type: !11, isLocal: false, isDefinition: true)
+!2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !3, producer: "clang version 7.0.0 ", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5)
+!3 = !DIFile(filename: "t.cpp", directory: "C:\5Csrc\5Cllvm-project\5Cbuild", checksumkind: CSK_MD5, checksum: "8910833bbe8b669a3787c8f44dff1313")
+!4 = !{}
+!5 = !{!0, !6}
+!6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression())
+!7 = distinct !DIGlobalVariable(name: "p_const", linkageName: "?p_const@@3PEBEEB", scope: !2, file: !3, line: 5, type: !8, isLocal: false, isDefinition: true)
+!8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 64)
+!9 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !10)
+!10 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char)
+!11 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Bits", file: !3, line: 1, size: 8, flags: DIFlagTypePassByValue, elements: !12, identifier: ".?AUBits@@")
+!12 = !{!13, !14}
+!13 = !DIDerivedType(tag: DW_TAG_member, name: "b0", scope: !11, file: !3, line: 2, baseType: !10, size: 1, flags: DIFlagBitField, extraData: i64 0)
+!14 = !DIDerivedType(tag: DW_TAG_member, name: "b1", scope: !11, file: !3, line: 3, baseType: !10, size: 1, offset: 1, flags: DIFlagBitField, extraData: i64 0)
+!15 = !{i32 2, !"CodeView", i32 1}
+!16 = !{i32 2, !"Debug Info Version", i32 3}
+!17 = !{i32 1, !"wchar_size", i32 2}
+!18 = !{i32 7, !"PIC Level", i32 2}
+!19 = !{!"clang version 7.0.0 "}
diff --git a/llvm/test/DebugInfo/PDB/obj-globalhash.test b/llvm/test/DebugInfo/PDB/obj-globalhash.test
index 9bb6946050a..770eae2704a 100644
--- a/llvm/test/DebugInfo/PDB/obj-globalhash.test
+++ b/llvm/test/DebugInfo/PDB/obj-globalhash.test
@@ -14,41 +14,41 @@ RUN: cat %T/hashes-combined.out | FileCheck --check-prefix=CHECK-SIX %s
; char**. Both the local and global hashes should be the same, since the only
; back-references are for simple types which have fixed indices.
CHECK-ONE: obj-hashes-1
-CHECK-ONE: TI: 0x1001, LocalHash: {{.*}}, GlobalHash: 8B2BA87CC27BF9D290A31A6070FA296AAA577E53
+CHECK-ONE: TI: 0x1001, LocalHash: {{.*}}, GlobalHash: 414E8FCAB16EC28AB86498D1A7F8CF106F39A384
CHECK-ONE: obj-hashes-2
-CHECK-ONE: TI: 0x1000, LocalHash: {{.*}}, GlobalHash: 8B2BA87CC27BF9D290A31A6070FA296AAA577E53
+CHECK-ONE: TI: 0x1000, LocalHash: {{.*}}, GlobalHash: 414E8FCAB16EC28AB86498D1A7F8CF106F39A384
; int**. Same as char**, both the local and global hashes should be the same.
CHECK-TWO: obj-hashes-1
-CHECK-TWO: TI: 0x1000, LocalHash: {{.*}}, GlobalHash: 1522A98D88FAF71B618D97BCAC2B89A424EC4805
+CHECK-TWO: TI: 0x1000, LocalHash: {{.*}}, GlobalHash: 91D2E2AD5D0F20EC1A24BE2E95D0616C5962F4B1
CHECK-TWO: obj-hashes-2
-CHECK-TWO: TI: 0x1002, LocalHash: {{.*}}, GlobalHash: 1522A98D88FAF71B618D97BCAC2B89A424EC4805
+CHECK-TWO: TI: 0x1002, LocalHash: {{.*}}, GlobalHash: 91D2E2AD5D0F20EC1A24BE2E95D0616C5962F4B1
; int***. Different local hashes, since the referent type (int**) is not at the
; same TypeIndex in both streams. Same global hash, since they represent the
; same record.
CHECK-THREE: obj-hashes-1
-CHECK-THREE: TI: 0x1002, LocalHash: {{.*}}, GlobalHash: EC11CE9F78D6BF61F8D913A9E2C98293782A7EB4
+CHECK-THREE: TI: 0x1002, LocalHash: {{.*}}, GlobalHash: 68A6DDB5C538D379E72E6425591A2B16352DF93D
CHECK-THREE: obj-hashes-2
-CHECK-THREE: TI: 0x1001, LocalHash: {{.*}}, GlobalHash: EC11CE9F78D6BF61F8D913A9E2C98293782A7EB4
+CHECK-THREE: TI: 0x1001, LocalHash: {{.*}}, GlobalHash: 68A6DDB5C538D379E72E6425591A2B16352DF93D
; arg list (char**, int***). Different local hashes, since the parameter types
; both occur at different TypeIndices in their respective input streams. Same
; global hash, since the global hash of all referenced types is the same in
; both streams.
CHECK-FOUR: obj-hashes-1
-CHECK-FOUR: TI: 0x1003, LocalHash: {{.*}}, GlobalHash: 1088AD64CEBC88D9E015058A159516AF20B79286
+CHECK-FOUR: TI: 0x1003, LocalHash: {{.*}}, GlobalHash: FD539365C0A8DEC0A1567C3E2F4C82E7AADB0E51
CHECK-FOUR: obj-hashes-2
-CHECK-FOUR: TI: 0x1004, LocalHash: {{.*}}, GlobalHash: 1088AD64CEBC88D9E015058A159516AF20B79286
+CHECK-FOUR: TI: 0x1004, LocalHash: {{.*}}, GlobalHash: FD539365C0A8DEC0A1567C3E2F4C82E7AADB0E51
; double**. This is only in stream 2, as a means to throw off the indexing.
CHECK-FIVE: obj-hashes-1
CHECK-FIVE: obj-hashes-2
-CHECK-FIVE: TI: 0x1003, LocalHash: {{.*}}, GlobalHash: 7803BBDB2947EF46BEA2310D102BD08F68315506
+CHECK-FIVE: TI: 0x1003, LocalHash: {{.*}}, GlobalHash: 5BB6926CA7924D06908872FA20691EA9B88584CC
; int** (char**, int***). For the same logic as described in previous records,
; these two records have the same global hash but different local hashes.
CHECK-SIX: obj-hashes-1
-CHECK-SIX: TI: 0x1004, LocalHash: {{.*}}, GlobalHash: 457ABCB8AB70407594B5D72BF471B6BDECC99BC9
+CHECK-SIX: TI: 0x1004, LocalHash: {{.*}}, GlobalHash: 7A8576BA937B2E87BBF94A9CBFA8F993EE746065
CHECK-SIX: obj-hashes-2
-CHECK-SIX: TI: 0x1005, LocalHash: {{.*}}, GlobalHash: 457ABCB8AB70407594B5D72BF471B6BDECC99BC9
+CHECK-SIX: TI: 0x1005, LocalHash: {{.*}}, GlobalHash: 7A8576BA937B2E87BBF94A9CBFA8F993EE746065
OpenPOWER on IntegriCloud