aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGabriel Dos Reis <gdr@integrable-solutions.net>2003-05-11 12:47:42 +0000
committerGabriel Dos Reis <gdr@gcc.gnu.org>2003-05-11 12:47:42 +0000
commitf333504d46da2f112b66a3957a7c8d0fd0c422f7 (patch)
treea6924f208de2f2c4ca7c84c3605e16b1d484b223 /gcc
parent9f01ded6a4ccb23faa18ce19091eb5ea0408b8d9 (diff)
downloadgcc-f333504d46da2f112b66a3957a7c8d0fd0c422f7.zip
gcc-f333504d46da2f112b66a3957a7c8d0fd0c422f7.tar.gz
gcc-f333504d46da2f112b66a3957a7c8d0fd0c422f7.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/c-common.c2
-rw-r--r--gcc/c-opts.c1
-rw-r--r--gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-1.C9
-rw-r--r--gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-2.C7
5 files changed, 25 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9c70206..fcfd2f4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2003-05-11 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ 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 <aoliva@redhat.com>
* 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 aa34d53..c3fcf42 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 bbceabb..82cae2e 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 0000000..3e84c09
--- /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 0000000..16873ab
--- /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();