diff options
author | John McCall <rjmccall@apple.com> | 2012-10-17 04:53:31 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2012-10-17 04:53:31 +0000 |
commit | b03527a9a395168762ad8e25e59a7a272dd74561 (patch) | |
tree | a4a42c8954972b200a301649c487a5869c32739a /lib/Serialization/ASTWriterDecl.cpp | |
parent | 621915c7a454307ad06ed2363379d52e2695a870 (diff) | |
download | clang-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.cpp | 2 |
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; |