================ @@ -3307,6 +3307,29 @@ void Sema::CheckShadowInheritedFields(const SourceLocation &Loc, } } +template <typename AttrType> +inline static bool HasAttribute(const QualType &T) { ---------------- AaronBallman wrote:
Here's my take on it: https://godbolt.org/z/qxq6jf3jM ``` class [[gnu::warn_unused]] S { public: S(); }; struct [[maybe_unused]] T {}; void f() { int i = 0; // Clang, GCC warn S s; // Clang, GCC warn T t; // Neither warn } class C { private: const int i = 0; // Clang warns int j = 0; // Clang warns const S s1; // Neither warn, Clang should warn const T t1; // Neither warn S s2; // Neither warn, Clang should warn T t2; // Neither warn }; ``` GCC doesn't support `-Wunused-private-field`, so it makes sense that they never warn on unused private fields. GCC doesn't document `warn_unused` as an attribute that I can find (they document `warn_unused_result`) but they do seem to support it. As best I can tell, the distinction between it and `maybe_unused` is that putting the attribute on a type does not silence the diagnostic on uses of that type. https://github.com/llvm/llvm-project/pull/120734 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits