[cfe-commits] r118753 - /cfe/trunk/lib/Sema/SemaInit.cpp

John McCall rjmccall at apple.com
Wed Nov 10 16:46:36 PST 2010


Author: rjmccall
Date: Wed Nov 10 18:46:36 2010
New Revision: 118753

URL: http://llvm.org/viewvc/llvm-project?rev=118753&view=rev
Log:
Unnest;  no functionality change.


Modified:
    cfe/trunk/lib/Sema/SemaInit.cpp

Modified: cfe/trunk/lib/Sema/SemaInit.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=118753&r1=118752&r2=118753&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaInit.cpp (original)
+++ cfe/trunk/lib/Sema/SemaInit.cpp Wed Nov 10 18:46:36 2010
@@ -735,48 +735,7 @@
                                       unsigned &Index,
                                       InitListExpr *StructuredList,
                                       unsigned &StructuredIndex) {
-  if (Index < IList->getNumInits()) {
-    Expr *expr = IList->getInit(Index);
-    if (InitListExpr *SubIList = dyn_cast<InitListExpr>(expr)) {
-      SemaRef.Diag(SubIList->getLocStart(),
-                    diag::warn_many_braces_around_scalar_init)
-        << SubIList->getSourceRange();
-
-      CheckScalarType(Entity, SubIList, DeclType, Index, StructuredList,
-                      StructuredIndex);
-      return;
-    } else if (isa<DesignatedInitExpr>(expr)) {
-      SemaRef.Diag(expr->getSourceRange().getBegin(),
-                    diag::err_designator_for_scalar_init)
-        << DeclType << expr->getSourceRange();
-      hadError = true;
-      ++Index;
-      ++StructuredIndex;
-      return;
-    }
-
-    ExprResult Result =
-      SemaRef.PerformCopyInitialization(Entity, expr->getLocStart(),
-                                        SemaRef.Owned(expr));
-
-    Expr *ResultExpr = 0;
-
-    if (Result.isInvalid())
-      hadError = true; // types weren't compatible.
-    else {
-      ResultExpr = Result.takeAs<Expr>();
-      
-      if (ResultExpr != expr) {
-        // The type was promoted, update initializer list.
-        IList->setInit(Index, ResultExpr);
-      }
-    }
-    if (hadError)
-      ++StructuredIndex;
-    else
-      UpdateStructuredListElement(StructuredList, StructuredIndex, ResultExpr);
-    ++Index;
-  } else {
+  if (Index >= IList->getNumInits()) {
     SemaRef.Diag(IList->getLocStart(), diag::err_empty_scalar_initializer)
       << IList->getSourceRange();
     hadError = true;
@@ -784,6 +743,47 @@
     ++StructuredIndex;
     return;
   }
+
+  Expr *expr = IList->getInit(Index);
+  if (InitListExpr *SubIList = dyn_cast<InitListExpr>(expr)) {
+    SemaRef.Diag(SubIList->getLocStart(),
+                 diag::warn_many_braces_around_scalar_init)
+      << SubIList->getSourceRange();
+
+    CheckScalarType(Entity, SubIList, DeclType, Index, StructuredList,
+                    StructuredIndex);
+    return;
+  } else if (isa<DesignatedInitExpr>(expr)) {
+    SemaRef.Diag(expr->getSourceRange().getBegin(),
+                 diag::err_designator_for_scalar_init)
+      << DeclType << expr->getSourceRange();
+    hadError = true;
+    ++Index;
+    ++StructuredIndex;
+    return;
+  }
+
+  ExprResult Result =
+    SemaRef.PerformCopyInitialization(Entity, expr->getLocStart(),
+                                      SemaRef.Owned(expr));
+
+  Expr *ResultExpr = 0;
+
+  if (Result.isInvalid())
+    hadError = true; // types weren't compatible.
+  else {
+    ResultExpr = Result.takeAs<Expr>();
+      
+    if (ResultExpr != expr) {
+      // The type was promoted, update initializer list.
+      IList->setInit(Index, ResultExpr);
+    }
+  }
+  if (hadError)
+    ++StructuredIndex;
+  else
+    UpdateStructuredListElement(StructuredList, StructuredIndex, ResultExpr);
+  ++Index;
 }
 
 void InitListChecker::CheckReferenceType(const InitializedEntity &Entity,





More information about the cfe-commits mailing list