]> granicus.if.org Git - clang/commitdiff
Don't warn about unamed bitfield ivars in the ObjCUnusedIvarsChecker. Fixes <rdar...
authorTed Kremenek <kremenek@apple.com>
Thu, 28 Oct 2010 02:16:22 +0000 (02:16 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 28 Oct 2010 02:16:22 +0000 (02:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117521 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Checker/ObjCUnusedIVarsChecker.cpp
test/Analysis/unused-ivars.m

index 2523cff9d8d01db2602dd96fa16bc0b40b388e36..edeba74ae83641d14a88e1e2c1cddb8fa311483c 100644 (file)
@@ -113,9 +113,11 @@ void clang::CheckObjCUnusedIvar(const ObjCImplementationDecl *D,
     // (a) aren't private
     // (b) explicitly marked unused
     // (c) are iboutlets
+    // (d) are unnamed bitfields
     if (ID->getAccessControl() != ObjCIvarDecl::Private ||
         ID->getAttr<UnusedAttr>() || ID->getAttr<IBOutletAttr>() ||
-        ID->getAttr<IBOutletCollectionAttr>())
+        ID->getAttr<IBOutletCollectionAttr>() ||
+        ID->isUnnamedBitfield())
       continue;
 
     M[ID] = Unused;
index 14c43a86c4086fb517b55155bd15006abd83f40c..c88d14880bd0dd51f5f2e01f88284c97a72a11e4 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -fblocks -analyze -analyzer-check-objc-unused-ivars %s -verify
+// RUN: %clang_cc1 -fobjc-nonfragile-abi2 -fblocks -analyze -analyzer-check-objc-unused-ivars %s -verify
 
 //===--- BEGIN: Delta-debugging reduced headers. --------------------------===//
 
@@ -95,4 +95,16 @@ int radar_7254495(RDar7254495 *a) {
 
 @implementation RDar7353683
 @end
+//===----------------------------------------------------------------------===//
+// <rdar://problem/8481311> Unused bitfield ivars trigger cause weird
+// diagnostic: "Instance variable '' in class…"
+//===----------------------------------------------------------------------===//
 
+@interface RDar8481311 {
+@private
+    unsigned bitfield:1; // expected-warning {{Instance variable 'bitfield' in class 'RDar8481311' is never used}}
+}
+@end
+
+@implementation RDar8481311
+@end