summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization
diff options
context:
space:
mode:
authorNico Weber <thakis@chromium.org>2019-11-17 02:09:25 -0500
committerNico Weber <thakis@chromium.org>2019-11-17 02:09:25 -0500
commitc9276fbfdf0c7caf1576b2db562286d7cec7e53b (patch)
treeb584cd30cae5f36372ed6fd48cb2cc4abec54dfa /clang/lib/Serialization
parentcc6b85390170725d2341416af2b2ab8ea6c25d83 (diff)
downloadbcm5719-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.cpp1
-rw-r--r--clang/lib/Serialization/ASTReaderDecl.cpp14
-rw-r--r--clang/lib/Serialization/ASTReaderStmt.cpp9
-rw-r--r--clang/lib/Serialization/ASTWriterDecl.cpp12
-rw-r--r--clang/lib/Serialization/ASTWriterStmt.cpp8
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;
}
OpenPOWER on IntegriCloud