]> granicus.if.org Git - clang/commitdiff
Check signedness of bitfield sizes.
authorAnders Carlsson <andersca@mac.com>
Mon, 16 Mar 2009 18:19:21 +0000 (18:19 +0000)
committerAnders Carlsson <andersca@mac.com>
Mon, 16 Mar 2009 18:19:21 +0000 (18:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67045 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDecl.cpp
test/Sema/bitfield.c

index 51b2b853a8b089c11432f0f51c63e17fb83fd940..d34a8e71110bf3ad2703c0ddf2d168ad72dfe176 100644 (file)
@@ -3363,7 +3363,7 @@ bool Sema::VerifyBitField(SourceLocation FieldLoc, IdentifierInfo *FieldName,
   if (Value == 0 && FieldName)
     return Diag(FieldLoc, diag::err_bitfield_has_zero_width) << FieldName;
   
-  if (Value.isNegative())
+  if (Value.isSigned() && Value.isNegative())
     return Diag(FieldLoc, diag::err_bitfield_has_negative_width) 
              << FieldName << Value.toString(10);
 
index 7a70fe8de83f944693d9f9328ef13c01a0c3b863..0a658c5c33e7e19652cb719980415b505a9f1c20 100644 (file)
@@ -17,5 +17,7 @@ struct a {
 
   // PR3607
   enum e0 f : 1; // expected-error {{field has incomplete type 'enum e0'}}
+  
+  int g : (_Bool)1;
 };