summaryrefslogtreecommitdiff
path: root/tools/llvm-pdbdump/LLVMOutputStyle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/llvm-pdbdump/LLVMOutputStyle.cpp')
-rw-r--r--tools/llvm-pdbdump/LLVMOutputStyle.cpp32
1 files changed, 13 insertions, 19 deletions
diff --git a/tools/llvm-pdbdump/LLVMOutputStyle.cpp b/tools/llvm-pdbdump/LLVMOutputStyle.cpp
index e975a5220af69..c4fecb80ea5a5 100644
--- a/tools/llvm-pdbdump/LLVMOutputStyle.cpp
+++ b/tools/llvm-pdbdump/LLVMOutputStyle.cpp
@@ -178,11 +178,10 @@ public:
private:
Error dumpTypeRecord(StringRef Label, TypeDatabase &DB, TypeIndex Index) {
CompactTypeDumpVisitor CTDV(DB, Index, &P);
- CVTypeVisitor Visitor(CTDV);
DictScope D(P, Label);
if (DB.contains(Index)) {
CVType &Type = DB.getTypeRecord(Index);
- if (auto EC = Visitor.visitTypeRecord(Type))
+ if (auto EC = codeview::visitTypeRecord(Type, CTDV))
return EC;
} else {
P.printString(
@@ -629,7 +628,6 @@ Error LLVMOutputStyle::dumpTpiStream(uint32_t StreamIdx) {
std::vector<std::unique_ptr<TypeVisitorCallbacks>> Visitors;
- Visitors.push_back(make_unique<TypeDeserializer>());
if (!StreamDB.hasValue()) {
StreamDB.emplace(Tpi->getNumTypeRecords());
Visitors.push_back(make_unique<TypeDatabaseVisitor>(*StreamDB));
@@ -659,8 +657,6 @@ Error LLVMOutputStyle::dumpTpiStream(uint32_t StreamIdx) {
for (const auto &V : Visitors)
Pipeline.addCallbackToPipeline(*V);
- CVTypeVisitor Visitor(Pipeline);
-
if (DumpRecords || DumpRecordBytes)
RecordScope = llvm::make_unique<ListScope>(P, "Records");
@@ -673,9 +669,10 @@ Error LLVMOutputStyle::dumpTpiStream(uint32_t StreamIdx) {
if ((DumpRecords || DumpRecordBytes) && !opts::raw::CompactRecords)
OneRecordScope = llvm::make_unique<DictScope>(P, "");
- if (auto EC = Visitor.visitTypeRecord(Type))
+ if (auto EC = codeview::visitTypeRecord(Type, Pipeline))
return EC;
- T.setIndex(T.getIndex() + 1);
+
+ ++T;
}
if (HadError)
return make_error<RawError>(raw_error_code::corrupt_file,
@@ -730,22 +727,19 @@ Error LLVMOutputStyle::buildTypeDatabase(uint32_t SN) {
DB.emplace(Tpi->getNumTypeRecords());
- TypeVisitorCallbackPipeline Pipeline;
- TypeDeserializer Deserializer;
TypeDatabaseVisitor DBV(*DB);
- Pipeline.addCallbackToPipeline(Deserializer);
- Pipeline.addCallbackToPipeline(DBV);
auto HashValues = Tpi->getHashValues();
- std::unique_ptr<TpiHashVerifier> HashVerifier;
- if (!HashValues.empty()) {
- HashVerifier =
- make_unique<TpiHashVerifier>(HashValues, Tpi->getNumHashBuckets());
- Pipeline.addCallbackToPipeline(*HashVerifier);
- }
+ if (HashValues.empty())
+ return codeview::visitTypeStream(Tpi->typeArray(), DBV);
+
+ TypeVisitorCallbackPipeline Pipeline;
+ Pipeline.addCallbackToPipeline(DBV);
+
+ TpiHashVerifier HashVerifier(HashValues, Tpi->getNumHashBuckets());
+ Pipeline.addCallbackToPipeline(HashVerifier);
- CVTypeVisitor Visitor(Pipeline);
- return Visitor.visitTypeStream(Tpi->types(nullptr));
+ return codeview::visitTypeStream(Tpi->typeArray(), Pipeline);
}
Error LLVMOutputStyle::dumpDbiStream() {