summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 6e7256c34d4..cc70dc4a5cd 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -1796,15 +1796,19 @@ void Sema::AddCXXDirectInitializerToDecl(DeclPtrTy Dcl,
IK_Direct);
if (!Constructor)
RealDecl->setInvalidDecl();
- else
- Exprs.release();
-
- // Let clients know that initialization was done with a direct
- // initializer.
- VDecl->setCXXDirectInitializer(true);
-
- // FIXME: Add ExprTys and Constructor to the RealDecl as part of
- // the initializer.
+ else {
+ // Let clients know that initialization was done with a direct
+ // initializer.
+ VDecl->setCXXDirectInitializer(true);
+
+ Expr *Temp =
+ new (Context) CXXTemporaryObjectExpr(Constructor, DeclInitType,
+ SourceLocation(),
+ (Expr**)Exprs.release(),
+ NumExprs,
+ SourceLocation());
+ AddInitializerToDecl(Dcl, ExprArg(*this, Temp), /*DirectInit=*/true);
+ }
return;
}
OpenPOWER on IntegriCloud