Reorganize this loop a bit so it doesn't crash for empty unions.  Fixes 
PR2419.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52060 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGExprConstant.cpp b/lib/CodeGen/CGExprConstant.cpp
index 58b1884..f597772 100644
--- a/lib/CodeGen/CGExprConstant.cpp
+++ b/lib/CodeGen/CGExprConstant.cpp
@@ -213,13 +213,15 @@
 
     // Find the field decl we're initializing, if any
     int FieldNo = 0; // Field no in RecordDecl
-    FieldDecl* curField;
-    do {
+    FieldDecl* curField = 0;
+    while (FieldNo < RD->getNumMembers()) {
       curField = RD->getMember(FieldNo);
       FieldNo++;
-    } while (!curField->getIdentifier() && FieldNo < RD->getNumMembers());
+      if (curField->getIdentifier())
+        break;
+    }
 
-    if (ILE->getNumInits() == 0 || !curField->getIdentifier())
+    if (!curField || !curField->getIdentifier() || ILE->getNumInits() == 0)
       return llvm::Constant::getNullValue(Ty);
 
     if (curField->isBitField()) {