diff options
author | Chris Lattner <sabre@nondot.org> | 2009-03-05 22:45:59 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-03-05 22:45:59 +0000 |
commit | 73bf7b42b629d4f10a600bed8d68b46ec59c9bcc (patch) | |
tree | 390886a710090b2a061656f811d44f026edd65a5 /clang/lib/Sema/SemaDeclCXX.cpp | |
parent | c559f3f17538aee3138b7e29646f7497b45ffef7 (diff) | |
download | bcm5719-llvm-73bf7b42b629d4f10a600bed8d68b46ec59c9bcc.tar.gz bcm5719-llvm-73bf7b42b629d4f10a600bed8d68b46ec59c9bcc.zip |
fix PR3607 and a fixme, by checking bitfield constraints
more consistently.
llvm-svn: 66210
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 3e8ee5ed1f7..0e5adc46a2d 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -547,11 +547,15 @@ Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, 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; |