[SymbolFilePDB] Rewrite ParseTypes method
authorAaron Smith <aaron.smith@microsoft.com>
Wed, 14 Mar 2018 04:05:27 +0000 (04:05 +0000)
committerAaron Smith <aaron.smith@microsoft.com>
Wed, 14 Mar 2018 04:05:27 +0000 (04:05 +0000)
commit66b84079f93f068117c9fb3f9d520c2cc0904f72
tree37052cb459cf738316a81541e0980e5162e38f3a
parentccf30835e1f1430033e89493f1776c6ca68da213
[SymbolFilePDB] Rewrite ParseTypes method

Summary:
The types for the compiland's children are parsed when parsing types for a PDB compiland. Global types also need to be parsed but unfortunately PDBs do not have compiland information about each global type. So we parse them all on the first call to ParseTypes.

If a sc.function is provided then parse the types for that function. Otherwise parse the types for the overall sc.comp_unit.

The ParseTypes method can be very slow if a program has a long list of compile units containing needed modules. Debugging clang-cl with lldb will show the problem.

Reviewers: zturner, rnk, lldb-commits

Reviewed By: zturner

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D44253

llvm-svn: 327473
lldb/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp