From 2dc509d89379c7921ef0dd95d88cd1fc8b0526d1 Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Wed, 27 Jun 2012 05:12:34 +0000 Subject: [PATCH] Introduce __has_feature(attribute_unused_on_fields) to determine whether the current version of clang understands __attribute__((unused)) on fields. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159252 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Lex/PPMacroExpansion.cpp | 1 + test/SemaCXX/warn-unused-member.cpp | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/lib/Lex/PPMacroExpansion.cpp b/lib/Lex/PPMacroExpansion.cpp index c6aabde03e..a46e31af44 100644 --- a/lib/Lex/PPMacroExpansion.cpp +++ b/lib/Lex/PPMacroExpansion.cpp @@ -632,6 +632,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) { .Case("attribute_objc_method_family", true) .Case("attribute_overloadable", true) .Case("attribute_unavailable_with_message", true) + .Case("attribute_unused_on_fields", true) .Case("blocks", LangOpts.Blocks) .Case("cxx_exceptions", LangOpts.Exceptions) .Case("cxx_rtti", LangOpts.RTTI) diff --git a/test/SemaCXX/warn-unused-member.cpp b/test/SemaCXX/warn-unused-member.cpp index cabc9b6cd6..6a7922e8e5 100644 --- a/test/SemaCXX/warn-unused-member.cpp +++ b/test/SemaCXX/warn-unused-member.cpp @@ -144,6 +144,13 @@ class EverythingUsed { int by_initializer_; }; +class HasFeatureTest { +#if __has_feature(attribute_unused_on_fields) + int unused_; // expected-warning{{private field 'unused_' is not used}} + int unused2_ __attribute__((unused)); // no-warning +#endif +}; + namespace templates { class B { template void f(T t); -- 2.40.0