]> granicus.if.org Git - clang/commit
[modules] Rework serialized DeclContext lookup table management. Instead of
authorRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 31 Aug 2015 22:17:11 +0000 (22:17 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 31 Aug 2015 22:17:11 +0000 (22:17 +0000)
commit6ad9335a2ad444f4bf405784917a3ababf831ca0
treeb811a1dc1b278e9f6abc0f5cd3c4a4a1d460b320
parente683c6b2e1e3d5a6b988960a7af84ed2fb2aa6ef
[modules] Rework serialized DeclContext lookup table management. Instead of
walking the loaded ModuleFiles looking for lookup tables for the context, store
them all in one place, and merge them together if we find we have too many
(currently, more than 4). If we do merge, include the merged form in our
serialized lookup table, so that downstream readers never need to look at our
imports' tables.

This gives a huge performance improvement to builds with very large numbers of
modules (in some cases, more than a 2x speedup was observed).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246497 91177308-0d34-0410-b5e6-96231b3b80d8
13 files changed:
include/clang/Serialization/ASTBitCodes.h
include/clang/Serialization/ASTReader.h
include/clang/Serialization/ASTWriter.h
include/clang/Serialization/Module.h
lib/Serialization/ASTReader.cpp
lib/Serialization/ASTReaderDecl.cpp
lib/Serialization/ASTReaderInternals.h
lib/Serialization/ASTWriter.cpp
lib/Serialization/ASTWriterDecl.cpp
lib/Serialization/Module.cpp
lib/Serialization/MultiOnDiskHashTable.h [new file with mode: 0644]
test/Modules/cxx-templates.cpp
test/Modules/merge-using-decls.cpp