Underline argument in -Wnonnull and in C++ extend warning to the this pointer [PR...
authorMartin Sebor <msebor@redhat.com>
Sun, 28 Jun 2020 20:22:14 +0000 (14:22 -0600)
committerMartin Sebor <msebor@redhat.com>
Sun, 28 Jun 2020 20:24:52 +0000 (14:24 -0600)
commit75ff24e1920ea6b198350a2961e23175e6108e75
tree88dfd1e43a652ff5f769d9543cd22d764cbe29e3
parentce56fd949f359a62b86a45aaf975ac2ecc48fa64
Underline argument in -Wnonnull and in C++ extend warning to the this pointer [PR c++/86568].

Resolves:
PR c++/86568 - -Wnonnull warnings should highlight the relevant argument not the closing parenthesis

gcc/c-family/ChangeLog:

PR c++/86568
* c-common.c (struct nonnull_arg_ctx): Add members.
(check_function_nonnull): Use nonnull_arg_ctx as argument.  Handle
C++ member functions specially.  Consider the this pointer implicitly
nonnull.
(check_nonnull_arg): Use location of argument when available.
(check_function_arguments): Use nonnull_arg_ctx as argument.

gcc/ChangeLog:

PR c++/86568
* calls.c (maybe_warn_rdwr_sizes): Use location of argument if
available.
* tree-ssa-ccp.c (pass_post_ipa_warn::execute): Same.  Adjust
indentation.
* tree.c (get_nonnull_args): Consider the this pointer implicitly
nonnull.
* var-tracking.c (deps_vec): New type.
(var_loc_dep_vec): New function.
(VAR_LOC_DEP_VEC): Use it.

gcc/testsuite/ChangeLog:

PR c++/86568
* g++.dg/warn/Wnonnull5.C: New test.
* c-c++-common/pr28656.c: Adjust text of expected warning.
* c-c++-common/pr66208.c: Same.
* g++.dg/cpp0x/nullptr22.C: Same.
* g++.dg/ext/attr-nonnull.C: Same.
* g++.dg/ext/attrib49.C: Same.
* g++.dg/pr71973-2.C: Same.
* g++.dg/warn/Wnonnull3.C: Same.
* g++.dg/warn/Wnonnull4.C: Same.
* obj-c++.dg/attributes/method-nonnull-1.mm: Same.
* objc.dg/attributes/method-nonnull-1.m: Same.
16 files changed:
gcc/c-family/c-common.c
gcc/calls.c
gcc/testsuite/c-c++-common/pr28656.c
gcc/testsuite/c-c++-common/pr66208.c
gcc/testsuite/g++.dg/cpp0x/nullptr22.C
gcc/testsuite/g++.dg/ext/attr-nonnull.C
gcc/testsuite/g++.dg/ext/attrib49.C
gcc/testsuite/g++.dg/pr71973-2.C
gcc/testsuite/g++.dg/warn/Wnonnull3.C
gcc/testsuite/g++.dg/warn/Wnonnull4.C
gcc/testsuite/g++.dg/warn/Wnonnull5.C [new file with mode: 0644]
gcc/testsuite/obj-c++.dg/attributes/method-nonnull-1.mm
gcc/testsuite/objc.dg/attributes/method-nonnull-1.m
gcc/tree-ssa-ccp.c
gcc/tree.c
gcc/var-tracking.c