Fix PR c++/96310 - Ignoring -Wnonnull via pragma gcc diagnostics still produces an unwanted note.
gcc/c-family/ChangeLog: PR c++/96310 * c-common.c (check_nonnull_arg): Print note only when warning was issued.
This commit is contained in:
parent
8d0b2b3374
commit
e0633768a1
@ -5538,7 +5538,7 @@ check_nonnull_arg (void *ctx, tree param, unsigned HOST_WIDE_INT param_num)
|
||||
{
|
||||
warned = warning_at (loc, OPT_Wnonnull,
|
||||
"%qs pointer null", "this");
|
||||
if (pctx->fndecl)
|
||||
if (warned && pctx->fndecl)
|
||||
inform (DECL_SOURCE_LOCATION (pctx->fndecl),
|
||||
"in a call to non-static member function %qD",
|
||||
pctx->fndecl);
|
||||
@ -5548,7 +5548,7 @@ check_nonnull_arg (void *ctx, tree param, unsigned HOST_WIDE_INT param_num)
|
||||
warned = warning_at (loc, OPT_Wnonnull,
|
||||
"argument %u null where non-null expected",
|
||||
(unsigned) param_num);
|
||||
if (pctx->fndecl)
|
||||
if (warned && pctx->fndecl)
|
||||
inform (DECL_SOURCE_LOCATION (pctx->fndecl),
|
||||
"in a call to function %qD declared %qs",
|
||||
pctx->fndecl, "nonnull");
|
||||
|
20
gcc/testsuite/g++.dg/warn/Wnonnull8.C
Normal file
20
gcc/testsuite/g++.dg/warn/Wnonnull8.C
Normal file
@ -0,0 +1,20 @@
|
||||
/* PR c++/96310 - Ignoring -Wnonnull via pragma gcc diagnostics still produces
|
||||
an unwanted note
|
||||
{ dg-do compile }
|
||||
{ dg-options "-Wall" } */
|
||||
|
||||
struct C {
|
||||
void f (); // { dg-message "in a call" }
|
||||
void g (); // { dg-bogus "in a call" }
|
||||
};
|
||||
|
||||
void f ()
|
||||
{
|
||||
static_cast<C*>(0)->f (); // { dg-warning "\\\[-Wnonnull" }
|
||||
}
|
||||
|
||||
void g ()
|
||||
{
|
||||
#pragma GCC diagnostic ignored "-Wnonnull"
|
||||
static_cast<C*>(0)->g ();
|
||||
}
|
Loading…
Reference in New Issue
Block a user