]> granicus.if.org Git - clang/commit
Be lazier when loading KeyFunctions from PCH/modules. We don't need to load
authorRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 29 Aug 2013 23:59:27 +0000 (23:59 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 29 Aug 2013 23:59:27 +0000 (23:59 +0000)
commitcd03f862d82cac28c9517e2036716f8d49112c8b
treec7f2ed11177f4f6c222f87caa6aedc1ed844e5f9
parent4e1a82c14cba135ebd86bcc914fcbbc524d70a61
Be lazier when loading KeyFunctions from PCH/modules. We don't need to load
these in eagerly if we're not actually processing a translation unit. The added
laziness here also avoids us loading in parts of a CXXRecordDecl earlier than an
upcoming class template specialization merging patch would like.

Ideally, we should mark the vtable as used when we see a definition for the key
function, rather than having a separate pass over dynamic classes at the end of
the TU. The existing approach is pretty bad for PCH/modules, since it forcibly
loads the declarations of all key functions in all imported modules, whether or
not those key functions are defined.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189627 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/ASTContext.h
lib/AST/RecordLayoutBuilder.cpp
lib/Serialization/ASTReaderDecl.cpp
test/PCH/check-deserializations.cpp