]> granicus.if.org Git - clang/commit
Allow deserialization of just the fields of a record, when we want to iterate over...
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 14 Oct 2010 20:14:34 +0000 (20:14 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 14 Oct 2010 20:14:34 +0000 (20:14 +0000)
commiteb5e9986e577b1e2bff3cca5973a2494fb593fbb
tree72f5c7c97cf402e7afdc1df4587ce7a240a3f0f9
parent336d43a368cee30549dc21a94e25fb03f887a27e
Allow deserialization of just the fields of a record, when we want to iterate over them,
instead of deserializing the complete declaration context of the record.

Iterating over the fields of a record is very common (e.g to determine the layout), unfortunately we needlessly deserialize every declaration
that the declaration context of the record contains; this can be bad for large C++ classes that contain a lot of methods.
Fix this by allow deserialization of just the fields when we want to iterate over them.
Progress for rdar://7260160.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116507 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/Decl.h
include/clang/AST/DeclBase.h
include/clang/AST/ExternalASTSource.h
include/clang/Serialization/ASTBitCodes.h
include/clang/Serialization/ASTReader.h
lib/AST/Decl.cpp
lib/AST/DeclBase.cpp
lib/Serialization/ASTReader.cpp
lib/Serialization/ASTWriter.cpp
test/PCH/check-deserializations.cpp [new file with mode: 0644]