This is not a list of pairs, it is a hash table data structure. We now correctly parse this out. It's hard to write a test for this, because doing so would require we have a PDB with hash adjusters, and they are only generated in the case of collisions, which typically require a very large PDB.
I plan to do some follow-up analysis and see if I can manually create some types that will collide by examining the collisions of a large PDB and carefully choosing some types. If that is successful, I can construct a minimal PDB with collisions and add a test case for them. In the meantime, here is a sample of the output when run against a very large PDB that does have collisions.
Adjusters [
{
Type: llvm::SmallVectorStorage<llvm::cl::OptionEnumValue,4>
TI: 0x4DBA
}
{
Type: llvm::SmallVectorStorage<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,2>
TI: 0x3C97
}
{
Type: llvm::SmallVectorTemplateCommon<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,void>
TI: 0x3D12
}
{
Type: llvm::SmallVectorStorage<char,32>
TI: 0x4305
}
{
Type: llvm::ErrorOr<llvm::sys::fs::space_info>
TI: 0x4302
}
{
Type: llvm::SmallVectorStorage<char,260>
TI: 0x30D0
}
{
Type: llvm::SmallVectorStorage<void *,4>
TI: 0x46FC
}
{
Type: llvm::SmallVectorTemplateCommon<wchar_t,void>
TI: 0x2E90
}
{
Type: llvm::SmallVectorStorage<char,64>
TI: 0x30A6
}