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
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp
index 0fb132d..904928b 100644
--- a/clang/lib/AST/ExprCXX.cpp
+++ b/clang/lib/AST/ExprCXX.cpp
@@ -1653,23 +1653,7 @@
FunctionParmPackExpr(QualType(), nullptr, SourceLocation(), 0, nullptr);
}
-MaterializeTemporaryExpr::MaterializeTemporaryExpr(
- QualType T, Expr *Temporary, bool BoundToLvalueReference,
- LifetimeExtendedTemporaryDecl *MTD)
- : Expr(MaterializeTemporaryExprClass, T,
- BoundToLvalueReference ? VK_LValue : VK_XValue, OK_Ordinary,
- Temporary->isTypeDependent(), Temporary->isValueDependent(),
- Temporary->isInstantiationDependent(),
- Temporary->containsUnexpandedParameterPack()) {
- if (MTD) {
- State = MTD;
- MTD->ExprWithTemporary = Temporary;
- return;
- }
- State = Temporary;
-}
-
-void MaterializeTemporaryExpr::setExtendingDecl(ValueDecl *ExtendedBy,
+void MaterializeTemporaryExpr::setExtendingDecl(const ValueDecl *ExtendedBy,
unsigned ManglingNumber) {
// We only need extra state if we have to remember more than just the Stmt.
if (!ExtendedBy)
@@ -1677,11 +1661,13 @@
// We may need to allocate extra storage for the mangling number and the
// extended-by ValueDecl.
- if (!State.is<LifetimeExtendedTemporaryDecl *>())
- State = LifetimeExtendedTemporaryDecl::Create(
- cast<Expr>(State.get<Stmt *>()), ExtendedBy, ManglingNumber);
+ if (!State.is<ExtraState *>()) {
+ auto *ES = new (ExtendedBy->getASTContext()) ExtraState;
+ ES->Temporary = State.get<Stmt *>();
+ State = ES;
+ }
- auto ES = State.get<LifetimeExtendedTemporaryDecl *>();
+ auto ES = State.get<ExtraState *>();
ES->ExtendingDecl = ExtendedBy;
ES->ManglingNumber = ManglingNumber;
}