On Thu, Nov 05, 2020 at 06:13:41PM -0500, David Malcolm via Gcc-patches wrote: > On Thu, 2020-11-05 at 11:03 -0500, Marek Polacek via Gcc-patches wrote: > > This PR asks that we add a warning option for an existing (very old) > > warning, so that it can be disabled selectively. clang++ uses > > -Wexceptions for this, so I added this new option rather than using > > e.g. -Wnoexcept. > > > > gcc/c-family/ChangeLog: > > > > PR c++/97675 > > * c.opt (Wexceptions): New option. > > > > gcc/cp/ChangeLog: > > > > PR c++/97675 > > * except.c (check_handlers_1): Use OPT_Wexceptions for the > > warning. Use inform for the second part of the warning. > > > > gcc/ChangeLog: > > > > PR c++/97675 > > * doc/invoke.texi: Document -Wexceptions. > > > > gcc/testsuite/ChangeLog: > > > > PR c++/97675 > > * g++.old-deja/g++.eh/catch10.C: Adjust dg-warning. > > * g++.dg/warn/Wexceptions1.C: New test. > > * g++.dg/warn/Wexceptions2.C: New test. > > --- > > gcc/c-family/c.opt | 4 ++++ > > gcc/cp/except.c | 9 ++++----- > > gcc/doc/invoke.texi | 8 +++++++- > > gcc/testsuite/g++.dg/warn/Wexceptions1.C | 9 +++++++++ > > gcc/testsuite/g++.dg/warn/Wexceptions2.C | 10 ++++++++++ > > gcc/testsuite/g++.old-deja/g++.eh/catch10.C | 4 ++-- > > 6 files changed, 36 insertions(+), 8 deletions(-) > > create mode 100644 gcc/testsuite/g++.dg/warn/Wexceptions1.C > > create mode 100644 gcc/testsuite/g++.dg/warn/Wexceptions2.C > > > > diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt > > index 426636be839..9493acb82ff 100644 > > --- a/gcc/c-family/c.opt > > +++ b/gcc/c-family/c.opt > > @@ -579,6 +579,10 @@ Werror-implicit-function-declaration > > C ObjC RejectNegative Warning Alias(Werror=, implicit-function- > > declaration) > > This switch is deprecated; use -Werror=implicit-function-declaration > > instead. > > > > +Wexceptions > > +C++ ObjC++ Var(warn_exceptions) Init(1) > > +Warn when an exception handler is shadowed by another handler. > > + > > Wextra > > C ObjC C++ ObjC++ Warning > > ; in common.opt > > diff --git a/gcc/cp/except.c b/gcc/cp/except.c > > index cb1a4105dae..985206f6a64 100644 > > --- a/gcc/cp/except.c > > +++ b/gcc/cp/except.c > > @@ -975,11 +975,10 @@ check_handlers_1 (tree master, > > tree_stmt_iterator i) > > tree handler = tsi_stmt (i); > > if (TREE_TYPE (handler) && can_convert_eh (type, TREE_TYPE > > (handler))) > > { > > Can you add an auto_diagnostic_group here please.
Yup, I've pushed this: >From 44e1f63e20fec07e3a10d8e75336cfda64c911bf Mon Sep 17 00:00:00 2001 From: Marek Polacek <pola...@redhat.com> Date: Thu, 5 Nov 2020 18:23:56 -0500 Subject: [pushed] c++: Add auto_diagnostic_group to check_handlers_1. This was missing. gcc/cp/ChangeLog: * except.c (check_handlers_1): Add auto_diagnostic_group. --- gcc/cp/except.c | 1 + 1 file changed, 1 insertion(+) diff --git a/gcc/cp/except.c b/gcc/cp/except.c index 985206f6a64..b72a28c1aa9 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -975,6 +975,7 @@ check_handlers_1 (tree master, tree_stmt_iterator i) tree handler = tsi_stmt (i); if (TREE_TYPE (handler) && can_convert_eh (type, TREE_TYPE (handler))) { + auto_diagnostic_group d; if (warning_at (EXPR_LOCATION (handler), OPT_Wexceptions, "exception of type %qT will be caught by earlier " "handler", TREE_TYPE (handler))) base-commit: e6fd02cc6d874c523466250a1cb724e0c7af9d75 -- 2.28.0