GCC/clang warning incompatibility with unused private member variables

Jason Merrill jason@redhat.com
Sun Jun 13 17:19:47 GMT 2021


On Fri, Jun 11, 2021 at 4:03 PM Jason Merrill <jason@redhat.com> wrote:

> On 6/11/21 3:37 PM, Markus Faehling wrote:
> > Hello,
> >
> > I'm currently facing a problem where I cannot get both gcc and clang
> > warning-free simultaneously in my project. My code looks somewhat like
> > this:
> >
> > class Test {
> >      int a_;
> >      void b() {};
> > };
> >
> > This code gives me the(usually very useful) "-Wunused-private-field"
> > warning on clang. But because I have the unused member on purpose, I
> > would like to add the [[maybe_unused]] attribute to it:
> >
> > class Test {
> >      [[maybe_unused]] int a_;
> >      void b() {};
> > };
> >
> > While this version is warning-free in clang, gcc has a "-Wattributes"
> > warning because it ignores the [[maybe_unused]] warning. But I do not
> > want to disable either of these warnings because they are still very
> > useful in other situations.
> >
> > Would it be possible to ignore the "-Wattributes" warning for
> > [[maybe_unused]] in places where other compilers might use the attribute?
> >
> > Demonstration on godbolt.org: https://godbolt.org/z/8oT4Kr5eM
>
> You can use #pragma to disable a warning for a particular section of code:
>
> #pragma GCC diagnostic push
> #pragma GCC diagnostic ignored "-Wattributes"
> class Test {
>       [[maybe_unused]] int a_;
>       void b() {};
> };
> #pragma GCC diagnostic pop
>
> But I also agree that GCC shouldn't warn here.


I've pushed a change to trunk to stop warning about this case.

Jason


More information about the Gcc mailing list