fix PR3607 and a fixme, by checking bitfield constraints
more consistently.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66210 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index 3e8ee5e..0e5adc4 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -547,11 +547,15 @@
   Decl *Member;
   bool InvalidDecl = false;
 
-  if (isInstField)
-    Member = static_cast<Decl*>(ActOnField(S, cast<CXXRecordDecl>(CurContext), 
-                                           Loc, D, BitWidth));
-  else
+  if (isInstField) {
+    FieldDecl *FD = 
+      HandleField(S, cast<CXXRecordDecl>(CurContext), Loc, D, BitWidth);
+    // Refresh our notion of bitwidth.
+    BitWidth = FD->getBitWidth();
+    Member = FD;
+  } else {
     Member = static_cast<Decl*>(ActOnDeclarator(S, D, LastInGroup));
+  }
 
   if (!Member) return LastInGroup;