]> granicus.if.org Git - clang/commitdiff
Allow __attribute__((unused)) for fields and make it silence
authorDaniel Jasper <djasper@google.com>
Wed, 13 Jun 2012 18:31:09 +0000 (18:31 +0000)
committerDaniel Jasper <djasper@google.com>
Wed, 13 Jun 2012 18:31:09 +0000 (18:31 +0000)
-Wunused-private-field.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158411 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclAttr.cpp
lib/Sema/SemaDeclCXX.cpp
test/SemaCXX/warn-unused-member.cpp

index 19ac6160c59f0d43d2e20fea86c7a9c2f9a2561a..cf17af034103989700f0e4ee76c579ecfe0700c6 100644 (file)
@@ -1610,7 +1610,7 @@ static void handleUnusedAttr(Sema &S, Decl *D, const AttributeList &Attr) {
   }
 
   if (!isa<VarDecl>(D) && !isa<ObjCIvarDecl>(D) && !isFunctionOrMethod(D) &&
-      !isa<TypeDecl>(D) && !isa<LabelDecl>(D)) {
+      !isa<TypeDecl>(D) && !isa<LabelDecl>(D) && !isa<FieldDecl>(D)) {
     S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type)
       << Attr.getName() << ExpectedVariableFunctionOrLabel;
     return;
index 4bd1c3202c945738bc7d8944a19540012d6d4590..12a63b189b7eeb0ecd2ee484ed75260acdf098a5 100644 (file)
@@ -1646,6 +1646,7 @@ Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D,
       // effects and are not part of a dependent type declaration.
       if (!FD->isImplicit() && FD->getDeclName() &&
           FD->getAccess() == AS_private &&
+          !FD->hasAttr<UnusedAttr>() &&
           !FD->getParent()->getTypeForDecl()->isDependentType() &&
           !InitializationHasSideEffects(*FD))
         UnusedPrivateFields.insert(FD);
index 16e1e22ee8a2d599e280b1dfa844ee084deb686c..00de8a97aca8ace8084cc3dc68b2f39219a9951a 100644 (file)
@@ -115,6 +115,8 @@ class A {
   Trivial user_constructor_;
   NonTrivialConstructor non_trivial_constructor_;
   NonTrivialDestructor non_trivial_destructor_;
+
+  int attr_  __attribute__((unused));
 };
 
 class EverythingUsed {