Don't just store the field/bit field info one field, do it for all fields in the union.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76907 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGRecordLayoutBuilder.cpp b/lib/CodeGen/CGRecordLayoutBuilder.cpp
index 875f5c3..af6ca82 100644
--- a/lib/CodeGen/CGRecordLayoutBuilder.cpp
+++ b/lib/CodeGen/CGRecordLayoutBuilder.cpp
@@ -146,7 +146,6 @@
   
   const ASTRecordLayout &Layout = Types.getContext().getASTRecordLayout(D);
   
-  const FieldDecl *FD = 0;
   const llvm::Type *Ty = 0;
   uint64_t Size = 0;
   unsigned Align = 0;
@@ -164,7 +163,11 @@
       // Ignore zero sized bit fields.
       if (FieldSize == 0)
         continue;
-    }
+      
+      // Add the bit field info.
+      Types.addBitFieldInfo(*Field, 0, 0, FieldSize);
+    } else
+      Types.addFieldInfo(*Field, 0);
     
     const llvm::Type *FieldTy = 
       Types.ConvertTypeForMemRecursive(Field->getType());
@@ -178,21 +181,12 @@
       Ty = FieldTy;
       Align = FieldAlign;
       Size = FieldSize;
-      FD = *Field;
     }
   }
   
   // Now add our field.
-  if (FD) {
+  if (Ty)
     AppendField(0, Size, Ty);
-    
-    if (FD->isBitField()) {
-      uint64_t FieldSize = 
-        FD->getBitWidth()->EvaluateAsInt(Types.getContext()).getZExtValue();
-      Types.addBitFieldInfo(FD, 0, 0, FieldSize);
-    } else
-      Types.addFieldInfo(FD, 0);
-  }
   
   // Append tail padding.
   if (Layout.getSize() / 8 > Size)