================
@@ -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

Reply via email to