]> git.ipfire.org Git - thirdparty/gcc.git/commit
Enhance -Waddress to detect more suspicious expressions [PR102103].
authorMartin Sebor <msebor@redhat.com>
Fri, 1 Oct 2021 17:50:25 +0000 (11:50 -0600)
committerMartin Sebor <msebor@redhat.com>
Fri, 1 Oct 2021 17:57:05 +0000 (11:57 -0600)
commit4dc7ce6fb3917958d1a6036d8acf2953b9c1b868
treedbf4c85270f34d710113d1bdeb3883cd32d6ff01
parentf1710910087fb1f4a7706e9ce838163ffcbc50b4
Enhance -Waddress to detect more suspicious expressions [PR102103].

Resolves:
PR c/102103 - missing warning comparing array address to null

gcc/ChangeLog:

PR c/102103
* doc/invoke.texi (-Waddress): Update.
* gengtype.c (write_types): Avoid -Waddress.
* poly-int.h (POLY_SET_COEFF): Avoid using null.

gcc/c-family/ChangeLog:

PR c/102103
* c-common.c (decl_with_nonnull_addr_p): Handle members.
Check and perform warning suppression.
(c_common_truthvalue_conversion): Enhance warning suppression.

gcc/c/ChangeLog:

PR c/102103
* c-typeck.c (maybe_warn_for_null_address): New function.
(build_binary_op): Call it.

gcc/cp/ChangeLog:

PR c/102103
* typeck.c (warn_for_null_address): Enhance.
(cp_build_binary_op): Call it also for member pointers.

gcc/fortran/ChangeLog:

PR c/102103
* array.c: Remove an unnecessary test.
* trans-array.c: Same.

gcc/testsuite/ChangeLog:

PR c/102103
* g++.dg/cpp0x/constexpr-array-ptr10.C: Suppress a valid warning.
* g++.dg/warn/Wreturn-local-addr-6.C: Correct a cast.
* gcc.dg/Waddress.c: Expect a warning.
* c-c++-common/Waddress-3.c: New test.
* c-c++-common/Waddress-4.c: New test.
* g++.dg/warn/Waddress-5.C: New test.
* g++.dg/warn/Waddress-6.C: New test.
* g++.dg/warn/pr101219.C: Expect a warning.
* gcc.dg/Waddress-3.c: New test.
17 files changed:
gcc/c-family/c-common.c
gcc/c/c-typeck.c
gcc/cp/typeck.c
gcc/doc/invoke.texi
gcc/fortran/array.c
gcc/fortran/trans-array.c
gcc/gengtype.c
gcc/poly-int.h
gcc/testsuite/c-c++-common/Waddress-3.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/Waddress-4.c [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr10.C
gcc/testsuite/g++.dg/warn/Waddress-5.C [new file with mode: 0644]
gcc/testsuite/g++.dg/warn/Waddress-6.C [new file with mode: 0644]
gcc/testsuite/g++.dg/warn/Wreturn-local-addr-6.C
gcc/testsuite/g++.dg/warn/pr101219.C
gcc/testsuite/gcc.dg/Waddress-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/Waddress.c