https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104148

--- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> ---
I suspect the unwanted suppression is because check_function_argument_recurse()
calls warning_suppressed_p (param) instead of warning_suppressed_p (param,
<option>) (for each of the warnings it checks).  So any other warning
suppressed for a call (or its arguments) like -Wparentheses will also suppress
-Wformat and friends.

Or it could also be because of one the outstanding suppress_warning() calls
with no warning option id:

grep suppress_warning gcc/cp/*.cc | grep -v OPT)
gcc/cp/call.cc: suppress_warning (c /* Suppress all warnings.  */);
gcc/cp/call.cc:      suppress_warning (decl);
gcc/cp/constraint.cc:   suppress_warning (t);
gcc/cp/coroutines.cc:  suppress_warning (r); /* We don't want a warning about
this.  */
gcc/cp/coroutines.cc:  suppress_warning (r); /* We don't want a warning about
this.  */
gcc/cp/coroutines.cc:      suppress_warning (rethrow);
gcc/cp/coroutines.cc:      suppress_warning (rethrow);
gcc/cp/cp-gimplify.cc:  suppress_warning (*stmt_p);
gcc/cp/cp-gimplify.cc:  suppress_warning (TREE_OPERAND (*stmt_p, 1));
gcc/cp/except.cc:      suppress_warning (rethrow);
gcc/cp/init.cc:   suppress_warning (cleanup);
gcc/cp/init.cc:   suppress_warning (init_expr);
gcc/cp/init.cc:      suppress_warning (stmt_expr /* What warning? */);
gcc/cp/pt.cc:      suppress_warning (tldcl);
gcc/cp/semantics.cc:    suppress_warning (DECL_EXPR_DECL (data.stmts[0]) /*
What warning? */);
gcc/cp/semantics.cc:    suppress_warning (DECL_EXPR_DECL (data.stmts[0])  /*
Wat warning? */);
gcc/cp/typeck.cc:      suppress_warning (arg /* What warning? */);
gcc/cp/typeck.cc:         suppress_warning (rval /* What warning? */);

Reply via email to