From 568eae48a4e19c0359cdcd2a33b8ec9812e4abbc Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Wed, 13 Jun 2012 18:31:09 +0000 Subject: [PATCH] Allow __attribute__((unused)) for fields and make it silence -Wunused-private-field. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158411 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaDeclAttr.cpp | 2 +- lib/Sema/SemaDeclCXX.cpp | 1 + test/SemaCXX/warn-unused-member.cpp | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp index 19ac6160c5..cf17af0341 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/lib/Sema/SemaDeclAttr.cpp @@ -1610,7 +1610,7 @@ static void handleUnusedAttr(Sema &S, Decl *D, const AttributeList &Attr) { } if (!isa(D) && !isa(D) && !isFunctionOrMethod(D) && - !isa(D) && !isa(D)) { + !isa(D) && !isa(D) && !isa(D)) { S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) << Attr.getName() << ExpectedVariableFunctionOrLabel; return; diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 4bd1c3202c..12a63b189b 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -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() && !FD->getParent()->getTypeForDecl()->isDependentType() && !InitializationHasSideEffects(*FD)) UnusedPrivateFields.insert(FD); diff --git a/test/SemaCXX/warn-unused-member.cpp b/test/SemaCXX/warn-unused-member.cpp index 16e1e22ee8..00de8a97ac 100644 --- a/test/SemaCXX/warn-unused-member.cpp +++ b/test/SemaCXX/warn-unused-member.cpp @@ -115,6 +115,8 @@ class A { Trivial user_constructor_; NonTrivialConstructor non_trivial_constructor_; NonTrivialDestructor non_trivial_destructor_; + + int attr_ __attribute__((unused)); }; class EverythingUsed { -- 2.40.0