diff options
-rw-r--r-- | include/clang/AST/ExprCXX.h | 5 | ||||
-rw-r--r-- | lib/Sema/SemaInit.cpp | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/include/clang/AST/ExprCXX.h b/include/clang/AST/ExprCXX.h index aec2c6a8bf..5cc5ee11a4 100644 --- a/include/clang/AST/ExprCXX.h +++ b/include/clang/AST/ExprCXX.h @@ -3013,8 +3013,9 @@ class MaterializeTemporaryExpr : public Expr { friend class ASTStmtWriter; public: - MaterializeTemporaryExpr(Expr *Temporary, bool BoundToLvalueReference) - : Expr(MaterializeTemporaryExprClass, Temporary->getType(), + MaterializeTemporaryExpr(QualType T, Expr *Temporary, + bool BoundToLvalueReference) + : Expr(MaterializeTemporaryExprClass, T, BoundToLvalueReference? VK_LValue : VK_XValue, OK_Ordinary, Temporary->isTypeDependent(), Temporary->isValueDependent(), Temporary->containsUnexpandedParameterPack()), diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp index 3231455f5a..e93d2d83cd 100644 --- a/lib/Sema/SemaInit.cpp +++ b/lib/Sema/SemaInit.cpp @@ -4080,7 +4080,9 @@ InitializationSequence::Perform(Sema &S, return ExprError(); // Materialize the temporary into memory. - CurInit = new (S.Context) MaterializeTemporaryExpr(CurInit.get(), + CurInit = new (S.Context) MaterializeTemporaryExpr( + Entity.getType().getNonReferenceType(), + CurInit.get(), Entity.getType()->isLValueReferenceType()); break; |