diff options
author | Akira Hatanaka <ahatanaka@apple.com> | 2018-03-13 18:58:25 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@apple.com> | 2018-03-13 18:58:25 +0000 |
commit | 34fb26456b6f5503ece10548d904babb0b65328a (patch) | |
tree | 1467789fc7af62e4fb861b38eef93874e7502d6d /clang/lib | |
parent | aee0af3e23a1bff79dc326cec3e9c85bba2e958c (diff) | |
download | bcm5719-llvm-34fb26456b6f5503ece10548d904babb0b65328a.tar.gz bcm5719-llvm-34fb26456b6f5503ece10548d904babb0b65328a.zip |
Serialize the NonTrivialToPrimitive* flags I added in r326307.
rdar://problem/38421774
llvm-svn: 327434
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 6 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 3 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTWriterDecl.cpp | 11 |
3 files changed, 17 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 6e4ae6ae159..577724bd67c 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -15445,12 +15445,12 @@ void Sema::ActOnFields(Scope *S, SourceLocation RecLoc, Decl *EnclosingDecl, if (Record && !getLangOpts().CPlusPlus) { QualType FT = FD->getType(); if (FT.isNonTrivialToPrimitiveDefaultInitialize()) - Record->setNonTrivialToPrimitiveDefaultInitialize(); + Record->setNonTrivialToPrimitiveDefaultInitialize(true); QualType::PrimitiveCopyKind PCK = FT.isNonTrivialToPrimitiveCopy(); if (PCK != QualType::PCK_Trivial && PCK != QualType::PCK_VolatileTrivial) - Record->setNonTrivialToPrimitiveCopy(); + Record->setNonTrivialToPrimitiveCopy(true); if (FT.isDestructedType()) - Record->setNonTrivialToPrimitiveDestroy(); + Record->setNonTrivialToPrimitiveDestroy(true); } if (Record && FD->getType().isVolatileQualified()) diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 10439d36f5b..ab99a170799 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -739,6 +739,9 @@ ASTDeclReader::VisitRecordDeclImpl(RecordDecl *RD) { RD->setAnonymousStructOrUnion(Record.readInt()); RD->setHasObjectMember(Record.readInt()); RD->setHasVolatileMember(Record.readInt()); + RD->setNonTrivialToPrimitiveDefaultInitialize(Record.readInt()); + RD->setNonTrivialToPrimitiveCopy(Record.readInt()); + RD->setNonTrivialToPrimitiveDestroy(Record.readInt()); return Redecl; } diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp index dd57029ca2e..b3886b6555f 100644 --- a/clang/lib/Serialization/ASTWriterDecl.cpp +++ b/clang/lib/Serialization/ASTWriterDecl.cpp @@ -465,6 +465,9 @@ void ASTDeclWriter::VisitRecordDecl(RecordDecl *D) { Record.push_back(D->isAnonymousStructOrUnion()); Record.push_back(D->hasObjectMember()); Record.push_back(D->hasVolatileMember()); + Record.push_back(D->isNonTrivialToPrimitiveDefaultInitialize()); + Record.push_back(D->isNonTrivialToPrimitiveCopy()); + Record.push_back(D->isNonTrivialToPrimitiveDestroy()); if (D->getDeclContext() == D->getLexicalDeclContext() && !D->hasAttrs() && @@ -1899,6 +1902,14 @@ void ASTWriter::WriteDeclAbbrevs() { Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // AnonymousStructUnion Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // hasObjectMember Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // hasVolatileMember + + // isNonTrivialToPrimitiveDefaultInitialize + Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); + // isNonTrivialToPrimitiveCopy + Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); + // isNonTrivialToPrimitiveDestroy + Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); + // DC Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LexicalOffset Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // VisibleOffset |