summaryrefslogtreecommitdiff
path: root/lib/Serialization/ASTWriterDecl.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2012-10-17 04:53:31 +0000
committerJohn McCall <rjmccall@apple.com>2012-10-17 04:53:31 +0000
commitb03527a9a395168762ad8e25e59a7a272dd74561 (patch)
treea4a42c8954972b200a301649c487a5869c32739a /lib/Serialization/ASTWriterDecl.cpp
parent621915c7a454307ad06ed2363379d52e2695a870 (diff)
downloadclang-b03527a9a395168762ad8e25e59a7a272dd74561.tar.gz
clang-b03527a9a395168762ad8e25e59a7a272dd74561.tar.bz2
clang-b03527a9a395168762ad8e25e59a7a272dd74561.tar.xz
Set a special flag in class metadata when an Objective-C class
has ivars that require destruction, but none that require anything except zero-initialization. This is common in ARC and (when true throughout a class hierarchy) permits the elimination of an unnecessary message-send during allocation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166088 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Serialization/ASTWriterDecl.cpp')
-rw-r--r--lib/Serialization/ASTWriterDecl.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/Serialization/ASTWriterDecl.cpp b/lib/Serialization/ASTWriterDecl.cpp
index 2270e8f621..e84afba549 100644
--- a/lib/Serialization/ASTWriterDecl.cpp
+++ b/lib/Serialization/ASTWriterDecl.cpp
@@ -606,6 +606,8 @@ void ASTDeclWriter::VisitObjCImplementationDecl(ObjCImplementationDecl *D) {
Writer.AddDeclRef(D->getSuperClass(), Record);
Writer.AddSourceLocation(D->getIvarLBraceLoc(), Record);
Writer.AddSourceLocation(D->getIvarRBraceLoc(), Record);
+ Record.push_back(D->hasNonZeroConstructors());
+ Record.push_back(D->hasDestructors());
Writer.AddCXXCtorInitializers(D->IvarInitializers, D->NumIvarInitializers,
Record);
Code = serialization::DECL_OBJC_IMPLEMENTATION;