summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2018-03-17 21:08:40 +0000
committerAaron Ballman <aaron@aaronballman.com>2018-03-17 21:08:40 +0000
commit33e90d160b1bcb3fa62be1242876403c12b85e8e (patch)
tree74db88572e44926d721dc7083a2a94435c7d6a2a /clang/lib
parenta8e2bb3949fd0ab096baad078db14206ce0f1757 (diff)
downloadbcm5719-llvm-33e90d160b1bcb3fa62be1242876403c12b85e8e.tar.gz
bcm5719-llvm-33e90d160b1bcb3fa62be1242876403c12b85e8e.zip
Implement DR2229, which prohibits unnamed bit-fields from having qualifiers in C++.
llvm-svn: 327781
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 612761177cd..ea971353039 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -14856,6 +14856,13 @@ FieldDecl *Sema::CheckFieldDecl(DeclarationName Name, QualType T,
InvalidDecl = true;
}
+ // Anonymous bit-fields cannot be cv-qualified (CWG 2229).
+ if (!InvalidDecl && getLangOpts().CPlusPlus && !II && BitWidth &&
+ T.hasQualifiers()) {
+ InvalidDecl = true;
+ Diag(Loc, diag::err_anon_bitfield_qualifiers);
+ }
+
// C99 6.7.2.1p8: A member of a structure or union may have any type other
// than a variably modified type.
if (!InvalidDecl && T->isVariablyModifiedType()) {
OpenPOWER on IntegriCloud