diff options
author | Nico Weber <thakis@chromium.org> | 2019-11-17 02:09:25 -0500 |
---|---|---|
committer | Nico Weber <thakis@chromium.org> | 2019-11-17 02:09:25 -0500 |
commit | c9276fbfdf0c7caf1576b2db562286d7cec7e53b (patch) | |
tree | b584cd30cae5f36372ed6fd48cb2cc4abec54dfa /clang/lib/Serialization | |
parent | cc6b85390170725d2341416af2b2ab8ea6c25d83 (diff) | |
download | bcm5719-llvm-c9276fbfdf0c7caf1576b2db562286d7cec7e53b.tar.gz bcm5719-llvm-c9276fbfdf0c7caf1576b2db562286d7cec7e53b.zip |
Revert "[NFC] Refactor representation of materialized temporaries"
This reverts commit 08ea1ee2db5f9d6460fef1d79d0d1d1a5eb78982.
It broke ./ClangdTests/FindExplicitReferencesTest.All
on the bots, see comments on https://reviews.llvm.org/D69360
Diffstat (limited to 'clang/lib/Serialization')
-rw-r--r-- | clang/lib/Serialization/ASTCommon.cpp | 1 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 14 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTReaderStmt.cpp | 9 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTWriterDecl.cpp | 12 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTWriterStmt.cpp | 8 |
5 files changed, 7 insertions, 37 deletions
diff --git a/clang/lib/Serialization/ASTCommon.cpp b/clang/lib/Serialization/ASTCommon.cpp index cdb5b17022c..dd06e0582ac 100644 --- a/clang/lib/Serialization/ASTCommon.cpp +++ b/clang/lib/Serialization/ASTCommon.cpp @@ -401,7 +401,6 @@ bool serialization::isRedeclarableDeclKind(unsigned Kind) { case Decl::Decomposition: case Decl::Binding: case Decl::Concept: - case Decl::LifetimeExtendedTemporary: return false; // These indirectly derive from Redeclarable<T> but are not actually diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 9f799e3646d..21d3da90de1 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -405,7 +405,6 @@ namespace clang { void VisitBlockDecl(BlockDecl *BD); void VisitCapturedDecl(CapturedDecl *CD); void VisitEmptyDecl(EmptyDecl *D); - void VisitLifetimeExtendedTemporaryDecl(LifetimeExtendedTemporaryDecl *D); std::pair<uint64_t, uint64_t> VisitDeclContext(DeclContext *DC); @@ -2350,16 +2349,6 @@ void ASTDeclReader::VisitEmptyDecl(EmptyDecl *D) { VisitDecl(D); } -void ASTDeclReader::VisitLifetimeExtendedTemporaryDecl( - LifetimeExtendedTemporaryDecl *D) { - VisitDecl(D); - D->ExtendingDecl = ReadDeclAs<ValueDecl>(); - D->ExprWithTemporary = Record.readStmt(); - if (Record.readInt()) - D->Value = new (D->getASTContext()) APValue(Record.readAPValue()); - D->ManglingNumber = Record.readInt(); -} - std::pair<uint64_t, uint64_t> ASTDeclReader::VisitDeclContext(DeclContext *DC) { uint64_t LexicalOffset = ReadLocalOffset(); @@ -3898,9 +3887,6 @@ Decl *ASTReader::ReadDeclRecord(DeclID ID) { case DECL_EMPTY: D = EmptyDecl::CreateDeserialized(Context, ID); break; - case DECL_LIFETIME_EXTENDED_TEMPORARY: - D = LifetimeExtendedTemporaryDecl::CreateDeserialized(Context, ID); - break; case DECL_OBJC_TYPE_PARAM: D = ObjCTypeParamDecl::CreateDeserialized(Context, ID); break; diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index 8837396d03d..3fd9fff5add 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -1900,11 +1900,10 @@ void ASTStmtReader::VisitFunctionParmPackExpr(FunctionParmPackExpr *E) { void ASTStmtReader::VisitMaterializeTemporaryExpr(MaterializeTemporaryExpr *E) { VisitExpr(E); - bool HasMaterialzedDecl = Record.readInt(); - if (HasMaterialzedDecl) - E->State = cast<LifetimeExtendedTemporaryDecl>(Record.readDecl()); - else - E->State = Record.readSubExpr(); + E->State = Record.readSubExpr(); + auto *VD = ReadDeclAs<ValueDecl>(); + unsigned ManglingNumber = Record.readInt(); + E->setExtendingDecl(VD, ManglingNumber); } void ASTStmtReader::VisitCXXFoldExpr(CXXFoldExpr *E) { diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp index 51902a607ca..b9ee8e81719 100644 --- a/clang/lib/Serialization/ASTWriterDecl.cpp +++ b/clang/lib/Serialization/ASTWriterDecl.cpp @@ -124,7 +124,6 @@ namespace clang { void VisitBlockDecl(BlockDecl *D); void VisitCapturedDecl(CapturedDecl *D); void VisitEmptyDecl(EmptyDecl *D); - void VisitLifetimeExtendedTemporaryDecl(LifetimeExtendedTemporaryDecl *D); void VisitDeclContext(DeclContext *DC); template <typename T> void VisitRedeclarable(Redeclarable<T> *D); @@ -1135,17 +1134,6 @@ void ASTDeclWriter::VisitEmptyDecl(EmptyDecl *D) { Code = serialization::DECL_EMPTY; } -void ASTDeclWriter::VisitLifetimeExtendedTemporaryDecl( - LifetimeExtendedTemporaryDecl *D) { - VisitDecl(D); - Record.AddDeclRef(D->getExtendingDecl()); - Record.AddStmt(D->getTemporaryExpr()); - Record.push_back(static_cast<bool>(D->getValue())); - if (D->getValue()) - Record.AddAPValue(*D->getValue()); - Record.push_back(D->getManglingNumber()); - Code = serialization::DECL_LIFETIME_EXTENDED_TEMPORARY; -} void ASTDeclWriter::VisitBlockDecl(BlockDecl *D) { VisitDecl(D); Record.AddStmt(D->getBody()); diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp index e66db435344..6f4abc44909 100644 --- a/clang/lib/Serialization/ASTWriterStmt.cpp +++ b/clang/lib/Serialization/ASTWriterStmt.cpp @@ -1835,11 +1835,9 @@ void ASTStmtWriter::VisitFunctionParmPackExpr(FunctionParmPackExpr *E) { void ASTStmtWriter::VisitMaterializeTemporaryExpr(MaterializeTemporaryExpr *E) { VisitExpr(E); - Record.push_back(static_cast<bool>(E->getLifetimeExtendedTemporaryDecl())); - if (E->getLifetimeExtendedTemporaryDecl()) - Record.AddDeclRef(E->getLifetimeExtendedTemporaryDecl()); - else - Record.AddStmt(E->getSubExpr()); + Record.AddStmt(E->getTemporary()); + Record.AddDeclRef(E->getExtendingDecl()); + Record.push_back(E->getManglingNumber()); Code = serialization::EXPR_MATERIALIZE_TEMPORARY; } |