BuildCXXConstructExpr now takes a MultiExprArg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81160 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index 89acfd1..8c5384b 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -2809,8 +2809,8 @@
 
 Sema::OwningExprResult
 Sema::BuildCXXConstructExpr(SourceLocation ConstructLoc, QualType DeclInitType,
-                            CXXConstructorDecl *Constructor,
-                            Expr **Exprs, unsigned NumExprs) {
+                            CXXConstructorDecl *Constructor, 
+                            MultiExprArg ExprArgs) {
   bool Elidable = false;
   
   // [class.copy]p15:
@@ -2821,8 +2821,8 @@
   //all, even if the class copy constructor or destructor have side effects.
   
   // FIXME: Is this enough?
-  if (Constructor->isCopyConstructor(Context) && NumExprs == 1) {
-    Expr *E = Exprs[0];
+  if (Constructor->isCopyConstructor(Context) && ExprArgs.size() == 1) {
+    Expr *E = ((Expr **)ExprArgs.get())[0];
     while (CXXBindTemporaryExpr *BE = dyn_cast<CXXBindTemporaryExpr>(E))
       E = BE->getSubExpr();
     
@@ -2831,7 +2831,7 @@
   }
   
   return BuildCXXConstructExpr(ConstructLoc, DeclInitType, Constructor, 
-                               Elidable, Exprs, NumExprs);
+                               Elidable, move(ExprArgs));
 }
 
 /// BuildCXXConstructExpr - Creates a complete call to a constructor,
@@ -2839,7 +2839,10 @@
 Sema::OwningExprResult
 Sema::BuildCXXConstructExpr(SourceLocation ConstructLoc, QualType DeclInitType,
                             CXXConstructorDecl *Constructor, bool Elidable,
-                            Expr **Exprs, unsigned NumExprs) {
+                            MultiExprArg ExprArgs) {
+  unsigned NumExprs = ExprArgs.size();
+  Expr **Exprs = (Expr **)ExprArgs.release();
+  
   ExprOwningPtr<CXXConstructExpr> Temp(this, 
                                        CXXConstructExpr::Create(Context, 
                                                                 DeclInitType, 
@@ -2897,10 +2900,10 @@
 bool Sema::InitializeVarWithConstructor(VarDecl *VD, 
                                         CXXConstructorDecl *Constructor,
                                         QualType DeclInitType, 
-                                        Expr **Exprs, unsigned NumExprs) {
+                                        MultiExprArg Exprs) {
   OwningExprResult TempResult = 
     BuildCXXConstructExpr(VD->getLocation(), DeclInitType, Constructor, 
-                          Exprs, NumExprs);
+                          move(Exprs));
   if (TempResult.isInvalid())
     return true;
   
@@ -3003,7 +3006,7 @@
     else {
       VDecl->setCXXDirectInitializer(true);
       if (InitializeVarWithConstructor(VDecl, Constructor, DeclInitType, 
-                                       (Expr**)Exprs.release(), NumExprs))
+                                       move(Exprs)))
         RealDecl->setInvalidDecl();
       FinalizeVarWithDestructor(VDecl, DeclInitType);
     }