BuildCXXConstructExpr now returns an OwningExprResult.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79975 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index 0ddf8b0..17e88b3 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -2407,9 +2407,10 @@
   CopyConstructor->setUsed();
 }
 
-Expr *Sema::BuildCXXConstructExpr(QualType DeclInitType,
-                                  CXXConstructorDecl *Constructor,
-                                  Expr **Exprs, unsigned NumExprs) {
+Sema::OwningExprResult
+Sema::BuildCXXConstructExpr(QualType DeclInitType,
+                            CXXConstructorDecl *Constructor,
+                            Expr **Exprs, unsigned NumExprs) {
   bool Elidable = false;
   
   // [class.copy]p15:
@@ -2435,10 +2436,12 @@
 
 /// BuildCXXConstructExpr - Creates a complete call to a constructor,
 /// including handling of its default argument expressions.
-Expr *Sema::BuildCXXConstructExpr(QualType DeclInitType, 
-                                  CXXConstructorDecl *Constructor,
-                                  bool Elidable,
-                                  Expr **Exprs, unsigned NumExprs) {
+Sema::OwningExprResult
+Sema::BuildCXXConstructExpr(QualType DeclInitType, 
+                            CXXConstructorDecl *Constructor,
+                            bool Elidable,
+                            Expr **Exprs, 
+                            unsigned NumExprs) {
   CXXConstructExpr *Temp = CXXConstructExpr::Create(Context, DeclInitType, 
                                                     Constructor, 
                                                     Elidable, Exprs, NumExprs);
@@ -2461,15 +2464,18 @@
     Expr *Arg = CXXDefaultArgExpr::Create(Context, FDecl->getParamDecl(j));
     Temp->setArg(j, Arg);
   }
-  return Temp;
+  return Owned(Temp);
 }
 
 void Sema::InitializeVarWithConstructor(VarDecl *VD, 
                                         CXXConstructorDecl *Constructor,
                                         QualType DeclInitType, 
                                         Expr **Exprs, unsigned NumExprs) {
-  Expr *Temp = BuildCXXConstructExpr(DeclInitType, Constructor, 
-                                     Exprs, NumExprs);  
+  OwningExprResult TempResult = BuildCXXConstructExpr(DeclInitType, Constructor, 
+                                                      Exprs, NumExprs);
+  assert(!TempResult.isInvalid() && "FIXME: Error handling");
+  
+  Expr *Temp = TempResult.takeAs<Expr>();
   MarkDeclarationReferenced(VD->getLocation(), Constructor);
   Temp = MaybeCreateCXXExprWithTemporaries(Temp, /*DestroyTemps=*/true);
   VD->setInit(Context, Temp);