From: Steve Naroff Date: Fri, 20 Feb 2009 17:57:11 +0000 (+0000) Subject: Fix bitfield constraints not enforced (for ObjC) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=63359c80b0ff4bd3e898f38efe88be3c01581320;p=clang Fix bitfield constraints not enforced (for ObjC) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65128 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 5a18aeb0ac..08b5a8c2ab 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -3572,12 +3572,9 @@ Sema::DeclTy *Sema::ActOnIvar(Scope *S, bool InvalidDecl = false; if (BitWidth) { - // TODO: Validate. - //printf("WARNING: BITFIELDS IGNORED!\n"); - - // 6.7.2.1p3 - // 6.7.2.1p4 - + // 6.7.2.1p3, 6.7.2.1p4 + if (VerifyBitField(Loc, II, T, BitWidth)) + InvalidDecl = true; } else { // Not a bitfield. diff --git a/test/SemaObjC/class-bitfield.m b/test/SemaObjC/class-bitfield.m new file mode 100644 index 0000000000..713a898fa0 --- /dev/null +++ b/test/SemaObjC/class-bitfield.m @@ -0,0 +1,17 @@ +// RUN: clang %s -fsyntax-only -verify + +@interface X +{ + int a : -1; // expected-error{{bit-field 'a' has negative width}} + + // rdar://6081627 + int b : 33; // expected-error{{size of bit-field 'b' exceeds size of its type (32 bits)}} + + int c : (1 + 0.25); // expected-error{{expression is not an integer constant expression}} + int d : (int)(1 + 0.25); + + // rdar://6138816 + int e : 0; // expected-error {{bit-field 'e' has zero width}} +} +@end +