summaryrefslogtreecommitdiff
path: root/lib/Serialization
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2017-11-02 01:06:00 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2017-11-02 01:06:00 +0000
commit549aaf11afe537d779888d05324759c2f3ef83b5 (patch)
tree6ac7e98afa1109a2190c0a8855cd2f212060c797 /lib/Serialization
parent0b8a53d586539d53a6060a0b2c13fd4c9fecfd95 (diff)
downloadclang-549aaf11afe537d779888d05324759c2f3ef83b5.tar.gz
PR33746: Store the 'inline'ness of a static data member with the update record
for instantiating its definition. We model the 'inline'ness as being instantiated with the static data member in order to track whether the declaration has become a definition yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@317147 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Serialization')
-rw-r--r--lib/Serialization/ASTReaderDecl.cpp2
-rw-r--r--lib/Serialization/ASTWriter.cpp2
2 files changed, 4 insertions, 0 deletions
diff --git a/lib/Serialization/ASTReaderDecl.cpp b/lib/Serialization/ASTReaderDecl.cpp
index 654a9fa94d..ae9efa9948 100644
--- a/lib/Serialization/ASTReaderDecl.cpp
+++ b/lib/Serialization/ASTReaderDecl.cpp
@@ -3988,6 +3988,8 @@ void ASTDeclReader::UpdateDecl(Decl *D,
VarDecl *VD = cast<VarDecl>(D);
VD->getMemberSpecializationInfo()->setPointOfInstantiation(
ReadSourceLocation());
+ VD->NonParmVarDeclBits.IsInline = Record.readInt();
+ VD->NonParmVarDeclBits.IsInlineSpecified = Record.readInt();
uint64_t Val = Record.readInt();
if (Val && !VD->getInit()) {
VD->setInit(Record.readExpr());
diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp
index 7e88c59b35..dec8d8f7d7 100644
--- a/lib/Serialization/ASTWriter.cpp
+++ b/lib/Serialization/ASTWriter.cpp
@@ -5084,6 +5084,8 @@ void ASTWriter::WriteDeclUpdatesBlocks(RecordDataImpl &OffsetsRecord) {
case UPD_CXX_INSTANTIATED_STATIC_DATA_MEMBER: {
const VarDecl *VD = cast<VarDecl>(D);
Record.AddSourceLocation(Update.getLoc());
+ Record.push_back(VD->isInline());
+ Record.push_back(VD->isInlineSpecified());
if (VD->getInit()) {
Record.push_back(!VD->isInitKnownICE() ? 1
: (VD->isInitICE() ? 3 : 2));