]> granicus.if.org Git - clang/commit
Re-commit r246497 (and dependent changes r246524 and r246521), reverted in
authorRichard Smith <richard-llvm@metafoo.co.uk>
Tue, 1 Sep 2015 20:35:42 +0000 (20:35 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Tue, 1 Sep 2015 20:35:42 +0000 (20:35 +0000)
commitad8f870018f49244b8077cdfb941c196cfcfd691
treedc345920447ba1e31eab6c5816b27b67e754420e
parent28f15cb167cc649a3b7fb0cb4f84be234ffcc7b2
Re-commit r246497 (and dependent changes r246524 and r246521), reverted in
r246546, with a workaround for an MSVC 2013 miscompile and an MSVC 2015
rejects-valid.

Original commit message:

[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@246582 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