diff options
Diffstat (limited to 'llvm/lib/DebugInfo/PDB/PDBSymbol.cpp')
-rw-r--r-- | llvm/lib/DebugInfo/PDB/PDBSymbol.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/llvm/lib/DebugInfo/PDB/PDBSymbol.cpp b/llvm/lib/DebugInfo/PDB/PDBSymbol.cpp index bbc395284bc..d65a153623a 100644 --- a/llvm/lib/DebugInfo/PDB/PDBSymbol.cpp +++ b/llvm/lib/DebugInfo/PDB/PDBSymbol.cpp @@ -98,10 +98,17 @@ PDBSymbol::create(const IPDBSession &PDBSession, } } -void PDBSymbol::dump(llvm::raw_ostream &OS) const { RawSymbol->dump(OS); } +void PDBSymbol::defaultDump(raw_ostream &OS, int Indent, + PDB_DumpLevel Level) const { + RawSymbol->dump(OS, Indent, Level); +} PDB_SymType PDBSymbol::getSymTag() const { return RawSymbol->getSymTag(); } +std::unique_ptr<IPDBEnumSymbols> PDBSymbol::findChildren(PDB_SymType Type) const { + return RawSymbol->findChildren(Type); +} + std::unique_ptr<IPDBEnumSymbols> PDBSymbol::findChildren(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags) const { @@ -118,3 +125,14 @@ std::unique_ptr<IPDBEnumSymbols> PDBSymbol::findInlineFramesByRVA(uint32_t RVA) const { return RawSymbol->findInlineFramesByRVA(RVA); } + +std::unique_ptr<IPDBEnumSymbols> +PDBSymbol::getChildStats(TagStats &Stats) const { + std::unique_ptr<IPDBEnumSymbols> Result(findChildren(PDB_SymType::None)); + Stats.clear(); + while (auto Child = Result->getNext()) { + ++Stats[Child->getSymTag()]; + } + Result->reset(); + return Result; +} |