Ok. On Fri, Jun 14, 2019, 8:10 AM Marek Polacek <pola...@redhat.com> wrote:
> This patch fixes a naked inform call, resulting in bogus note in the > following testcase, if not compiled with -Wsystem-headers. > > Bootstrap/regtest running on x86_64-linux, ok for trunk? > > 2019-06-14 Marek Polacek <pola...@redhat.com> > > PR c++/90884 - stray note with -Wctor-dtor-privacy. > * class.c (maybe_warn_about_overly_private_class): Guard the call > to > inform. > > * g++.dg/warn/ctor-dtor-privacy-4.C: New. > * g++.dg/warn/ctor-dtor-privacy-4.h: New. > > diff --git gcc/cp/class.c gcc/cp/class.c > index 4fdb0f328cc..de37e43d04c 100644 > --- gcc/cp/class.c > +++ gcc/cp/class.c > @@ -2150,10 +2150,10 @@ maybe_warn_about_overly_private_class (tree t) > > if (!nonprivate_ctor) > { > - warning (OPT_Wctor_dtor_privacy, > - "%q#T only defines private constructors and has no > friends", > - t); > - if (copy_or_move) > + bool w = warning (OPT_Wctor_dtor_privacy, > + "%q#T only defines private constructors and > has " > + "no friends", t); > + if (w && copy_or_move) > inform (DECL_SOURCE_LOCATION (copy_or_move), > "%q#D is public, but requires an existing %q#T object", > copy_or_move, t); > diff --git gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.C > gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.C > new file mode 100644 > index 00000000000..fcad34e000c > --- /dev/null > +++ gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.C > @@ -0,0 +1,5 @@ > +// PR c++/90884 > +// { dg-options "-Wctor-dtor-privacy" } > +// { dg-prune-output "In file included from" } > + > +#include "ctor-dtor-privacy-4.h" // { dg-bogus "is public" } > diff --git gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.h > gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.h > new file mode 100644 > index 00000000000..d67fd26943e > --- /dev/null > +++ gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.h > @@ -0,0 +1,7 @@ > +#pragma GCC system_header > + > +namespace std { > +struct __nonesuch { > + __nonesuch(__nonesuch const &); > +}; > +} // namespace std >