Move initialization via initializer list over to InitializationSequences.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91050 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 3fa7e65..a171217 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -3499,7 +3499,8 @@
       Diag(VDecl->getLocation(), diag::err_block_extern_cant_init);
       VDecl->setInvalidDecl();
     } else if (!VDecl->isInvalidDecl()) {
-      if (VDecl->getType()->isReferenceType()) {
+      if (VDecl->getType()->isReferenceType()
+          || isa<InitListExpr>(Init)) {
         InitializedEntity Entity
           = InitializedEntity::InitializeVariable(VDecl);
 
@@ -3513,7 +3514,8 @@
         InitializationSequence InitSeq(*this, Entity, Kind, &Init, 1);
         if (InitSeq) {
           OwningExprResult Result = InitSeq.Perform(*this, Entity, Kind,
-                                      MultiExprArg(*this, (void**)&Init, 1));
+                                           MultiExprArg(*this, (void**)&Init, 1),
+                                                    &DclT);
           if (Result.isInvalid()) {
             VDecl->setInvalidDecl();
             return;
@@ -3524,8 +3526,7 @@
           InitSeq.Diagnose(*this, Entity, Kind, &Init, 1);
           VDecl->setInvalidDecl();
           return;
-        }
-        
+        }    
       } else if (CheckInitializerTypes(Init, DclT, VDecl->getLocation(),
                                        VDecl->getDeclName(), DirectInit))
         VDecl->setInvalidDecl();