From f333504d46da2f112b66a3957a7c8d0fd0c422f7 Mon Sep 17 00:00:00 2001 From: Gabriel Dos Reis Date: Sun, 11 May 2003 12:47:42 +0000 Subject: [PATCH] re PR c++/689 ([diagnostic] this warning is not helpful: `class xxxx' only defines a private destructor and has no friend) PR C++/689 PR C++/9257 * c-opts.c (c_common_decode_option): Don't set warn_ctor_dtor_privacy wen -Wall. * c-common.c (warn_ctor_dtor_privacy): Don't turn on by default. From-SVN: r66684 --- gcc/ChangeLog | 8 ++++++++ gcc/c-common.c | 2 +- gcc/c-opts.c | 1 - gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-1.C | 9 +++++++++ gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-2.C | 7 +++++++ 5 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-1.C create mode 100644 gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-2.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9c7020697e7..fcfd2f4d282 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2003-05-11 Gabriel Dos Reis + + PR C++/689 + PR C++/9257 + * c-opts.c (c_common_decode_option): Don't set + warn_ctor_dtor_privacy wen -Wall. + * c-common.c (warn_ctor_dtor_privacy): Don't turn on by default. + 2003-05-10 Alexandre Oliva * reload1.c (reload_cse_move2add): Revert part of my 2003-05-09's diff --git a/gcc/c-common.c b/gcc/c-common.c index aa34d53afcb..c3fcf42e8d1 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -626,7 +626,7 @@ int warn_implicit = 1; /* Nonzero means warn when all ctors or dtors are private, and the class has no friends. */ -int warn_ctor_dtor_privacy = 1; +int warn_ctor_dtor_privacy = 0; /* Nonzero means warn in function declared in derived class has the same name as a virtual in the base class, but fails to match the diff --git a/gcc/c-opts.c b/gcc/c-opts.c index bbceabbf323..82cae2e6c9f 100644 --- a/gcc/c-opts.c +++ b/gcc/c-opts.c @@ -825,7 +825,6 @@ c_common_decode_option (argc, argv) else { /* C++-specific warnings. */ - warn_ctor_dtor_privacy = on; warn_nonvdtor = on; warn_reorder = on; warn_nontemplate_friend = on; diff --git a/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-1.C b/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-1.C new file mode 100644 index 00000000000..3e84c092168 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-1.C @@ -0,0 +1,9 @@ +// { dg-options "-Wctor-dtor-privacy" } + +struct C { // { dg-warning "" } + static bool result; +private: + static bool check(); +}; + +bool C::result = check(); diff --git a/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-2.C b/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-2.C new file mode 100644 index 00000000000..16873ab7821 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-2.C @@ -0,0 +1,7 @@ +struct C { + static bool result; +private: + static bool check(); +}; + +bool C::result = check(); -- 2.30.2