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;