diff options
author | Marek Polacek <polacek@redhat.com> | 2019-09-28 11:46:33 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2019-09-28 11:46:33 +0000 |
commit | 7cf66a2dbe8017f59d2b28e8db3de8067efcc43e (patch) | |
tree | db6e3f81bed0116523ac7648fb672b27ded21bd9 | |
parent | 028c9b3be468a5dbd27e3190b14d60b04ea02ff4 (diff) | |
download | gcc-7cf66a2dbe8017f59d2b28e8db3de8067efcc43e.zip gcc-7cf66a2dbe8017f59d2b28e8db3de8067efcc43e.tar.gz gcc-7cf66a2dbe8017f59d2b28e8db3de8067efcc43e.tar.bz2 |
PR c++/91921 - stray warning with -Woverloaded-virtual.
* class.c (warn_hidden): Only emit the second part of
-Woverloaded-virtual if the first part was issued. Use inform instead
warning_at.
* g++.dg/warn/Woverloaded-2.C: New.
* g++.dg/warn/Woverloaded-2.h: New.
* g++.dg/warn/pr61945.C: Turn dg-warning into dg-message.
* g++.old-deja/g++.mike/warn6.C: Likewise.
* g++.old-deja/g++.warn/virt1.C: Likewise.
From-SVN: r276249
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/class.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Woverloaded-2.C | 9 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Woverloaded-2.h | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/pr61945.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.mike/warn6.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.warn/virt1.C | 2 |
8 files changed, 37 insertions, 10 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 895ebd9..c30d704 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2019-09-28 Marek Polacek <polacek@redhat.com> + PR c++/91921 - stray warning with -Woverloaded-virtual. + * class.c (warn_hidden): Only emit the second part of + -Woverloaded-virtual if the first part was issued. Use inform instead + warning_at. + PR c++/91923 - failure-to-SFINAE with class type NTTP in C++17. * pt.c (invalid_nontype_parm_type_p): Only emit errors when tf_error. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 59a3d1a..3838f76 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -2914,12 +2914,12 @@ warn_hidden (tree t) FOR_EACH_VEC_ELT (base_fndecls, j, base_fndecl) if (base_fndecl) { + auto_diagnostic_group d; /* Here we know it is a hider, and no overrider exists. */ - warning_at (location_of (base_fndecl), - OPT_Woverloaded_virtual, - "%qD was hidden", base_fndecl); - warning_at (location_of (fns), - OPT_Woverloaded_virtual, " by %qD", fns); + if (warning_at (location_of (base_fndecl), + OPT_Woverloaded_virtual, + "%qD was hidden", base_fndecl)) + inform (location_of (fns), " by %qD", fns); } } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 617fc99..104a83b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,12 @@ 2019-09-28 Marek Polacek <polacek@redhat.com> + PR c++/91921 - stray warning with -Woverloaded-virtual. + * g++.dg/warn/Woverloaded-2.C: New. + * g++.dg/warn/Woverloaded-2.h: New. + * g++.dg/warn/pr61945.C: Turn dg-warning into dg-message. + * g++.old-deja/g++.mike/warn6.C: Likewise. + * g++.old-deja/g++.warn/virt1.C: Likewise. + PR c++/91923 - failure-to-SFINAE with class type NTTP in C++17. * g++.dg/cpp0x/nontype5.C: New test. diff --git a/gcc/testsuite/g++.dg/warn/Woverloaded-2.C b/gcc/testsuite/g++.dg/warn/Woverloaded-2.C new file mode 100644 index 0000000..84d65de --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Woverloaded-2.C @@ -0,0 +1,9 @@ +// PR c++/91921 - stray warning with -Woverloaded-virtual. +// { dg-options "-Woverloaded-virtual" } + +#include "Woverloaded-2.h" + +struct B : A +{ + void f(int); +}; diff --git a/gcc/testsuite/g++.dg/warn/Woverloaded-2.h b/gcc/testsuite/g++.dg/warn/Woverloaded-2.h new file mode 100644 index 0000000..b9e15b0 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Woverloaded-2.h @@ -0,0 +1,6 @@ +#pragma GCC system_header + +struct A +{ + virtual void f(); +}; diff --git a/gcc/testsuite/g++.dg/warn/pr61945.C b/gcc/testsuite/g++.dg/warn/pr61945.C index 5584d84..3d40581 100644 --- a/gcc/testsuite/g++.dg/warn/pr61945.C +++ b/gcc/testsuite/g++.dg/warn/pr61945.C @@ -7,5 +7,5 @@ class A { }; class B : A { template <typename> - void foo (); // { dg-warning "by .B::foo\\(\\)." } + void foo (); // { dg-message "by .B::foo\\(\\)." } }; diff --git a/gcc/testsuite/g++.old-deja/g++.mike/warn6.C b/gcc/testsuite/g++.old-deja/g++.mike/warn6.C index 9c694d6..26759cf 100644 --- a/gcc/testsuite/g++.old-deja/g++.mike/warn6.C +++ b/gcc/testsuite/g++.old-deja/g++.mike/warn6.C @@ -30,13 +30,13 @@ struct D : public B, public B2, public B3 { virtual void bothsame(int); - virtual void bothdiff(int); // { dg-warning "" } + virtual void bothdiff(int); // { dg-message "" } virtual void both2same(int); virtual void both2same(float); - virtual void both12diff(int); // { dg-warning "" } + virtual void both12diff(int); // { dg-message "" } - virtual void bothfardiff(int); // { dg-warning "" } + virtual void bothfardiff(int); // { dg-message "" } }; diff --git a/gcc/testsuite/g++.old-deja/g++.warn/virt1.C b/gcc/testsuite/g++.old-deja/g++.warn/virt1.C index 4550dd5..c68de8a 100644 --- a/gcc/testsuite/g++.old-deja/g++.warn/virt1.C +++ b/gcc/testsuite/g++.old-deja/g++.warn/virt1.C @@ -6,5 +6,5 @@ struct A { }; struct B: public A { - void f(int); // { dg-warning "" } by this + void f(int); // { dg-message "" } by this }; |