Correctly handle scalars in braces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46480 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/CodeGen/CGExprConstant.cpp b/CodeGen/CGExprConstant.cpp
index 5808da4..da2fef6 100644
--- a/CodeGen/CGExprConstant.cpp
+++ b/CodeGen/CGExprConstant.cpp
@@ -68,26 +68,18 @@
   }
   
   llvm::Constant *VisitInitListExpr(InitListExpr *ILE) {
-    if (ILE->getType()->isVoidType()) {
-      // FIXME: Remove this when sema of initializers is finished (and the code
-      // below).
-      CGM.WarnUnsupported(ILE, "initializer");
-      return 0;
+    const llvm::CompositeType *CType = 
+      dyn_cast<llvm::CompositeType>(ConvertType(ILE->getType()));
+
+    if (!CType) {
+        // We have a scalar in braces. Just use the first element.
+        return Visit(ILE->getInit(0));
     }
-    
-    assert((ILE->getType()->isArrayType() || ILE->getType()->isStructureType() ||
-            ILE->getType()->isVectorType()) &&
-           "Bad type for init list!");
-    CodeGenTypes& Types = CGM.getTypes();
-    
+      
     unsigned NumInitElements = ILE->getNumInits();
     unsigned NumInitableElts = NumInitElements;
-    
-    const llvm::CompositeType *CType = 
-    cast<llvm::CompositeType>(Types.ConvertType(ILE->getType()));
-    assert(CType);
     std::vector<llvm::Constant*> Elts;    
-    
+      
     // Initialising an array requires us to automatically initialise any 
     // elements that have not been initialised explicitly
     const llvm::ArrayType *AType = 0;