diff options
Diffstat (limited to 'llvm/tools')
-rw-r--r-- | llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp | 18 | ||||
-rw-r--r-- | llvm/tools/llvm-readobj/COFFDumper.cpp | 5 |
2 files changed, 12 insertions, 11 deletions
diff --git a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp index 50ee5f4d0ac..3394d3268dd 100644 --- a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp +++ b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp @@ -500,6 +500,7 @@ static void yamlToPdb(StringRef Path) { pdb::yaml::PdbInfoStream DefaultInfoStream; pdb::yaml::PdbDbiStream DefaultDbiStream; pdb::yaml::PdbTpiStream DefaultTpiStream; + pdb::yaml::PdbTpiStream DefaultIpiStream; const auto &Info = YamlObj.PdbStream.getValueOr(DefaultInfoStream); @@ -601,11 +602,11 @@ static void yamlToPdb(StringRef Path) { for (const auto &R : Tpi.Records) TpiBuilder.addTypeRecord(R.Record.data(), R.Record.Hash); - const auto &Ipi = YamlObj.IpiStream.getValueOr(DefaultTpiStream); + const auto &Ipi = YamlObj.IpiStream.getValueOr(DefaultIpiStream); auto &IpiBuilder = Builder.getIpiBuilder(); IpiBuilder.setVersionHeader(Ipi.Version); for (const auto &R : Ipi.Records) - TpiBuilder.addTypeRecord(R.Record.data(), R.Record.Hash); + IpiBuilder.addTypeRecord(R.Record.data(), R.Record.Hash); ExitOnErr(Builder.commit(opts::yaml2pdb::YamlPdbOutputFile)); } @@ -852,18 +853,17 @@ static void mergePdbs() { for (const auto &Path : opts::merge::InputFilenames) { std::unique_ptr<IPDBSession> Session; auto &File = loadPDB(Path, Session); - SmallVector<TypeIndex, 128> SourceToDest; + SmallVector<TypeIndex, 128> TypeMap; + SmallVector<TypeIndex, 128> IdMap; if (File.hasPDBTpiStream()) { - SourceToDest.clear(); auto &Tpi = ExitOnErr(File.getPDBTpiStream()); - ExitOnErr(codeview::mergeTypeStreams(MergedIpi, MergedTpi, SourceToDest, - nullptr, Tpi.typeArray())); + ExitOnErr(codeview::mergeTypeRecords(MergedTpi, TypeMap, nullptr, + Tpi.typeCollection())); } if (File.hasPDBIpiStream()) { - SourceToDest.clear(); auto &Ipi = ExitOnErr(File.getPDBIpiStream()); - ExitOnErr(codeview::mergeTypeStreams(MergedIpi, MergedTpi, SourceToDest, - nullptr, Ipi.typeArray())); + ExitOnErr(codeview::mergeIdRecords(MergedIpi, TypeMap, IdMap, + Ipi.typeCollection())); } } diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp index 78bfa558e4a..96adf49ed69 100644 --- a/llvm/tools/llvm-readobj/COFFDumper.cpp +++ b/llvm/tools/llvm-readobj/COFFDumper.cpp @@ -1072,9 +1072,10 @@ void COFFDumper::mergeCodeViewTypes(TypeTableBuilder &CVIDs, W.flush(); error(object_error::parse_failed); } + LazyRandomTypeCollection TypesAndIds(Types, 100); SmallVector<TypeIndex, 128> SourceToDest; - if (auto EC = - mergeTypeStreams(CVIDs, CVTypes, SourceToDest, nullptr, Types)) + if (auto EC = mergeTypeAndIdRecords(CVIDs, CVTypes, SourceToDest, nullptr, + TypesAndIds)) return error(std::move(EC)); } } |