Warn when comparing nonnull arguments to NULL in a function.
authorMark Wielaard <mjw@redhat.com>
Thu, 10 Sep 2015 15:29:44 +0000 (15:29 +0000)
committerMark Wielaard <mark@gcc.gnu.org>
Thu, 10 Sep 2015 15:29:44 +0000 (15:29 +0000)
commitdbb68221b64c0174eeb22d878a8e078775ee73bf
treef34f064a585942929fce66827ae853b1f48d5357
parent0815fd250302b45a3aadd9b32d8559c7b47d86e4
Warn when comparing nonnull arguments to NULL in a function.

If an argument is marked as nonnull then passing in a NULL argument
will produce bad results even if the code checks against NULL. GCC
might optimize such checks away so warn the user when the function
contains such comparisons.

nn.c: In function ‘foo’:
nn.c:6:27: warning: nonnull argument ‘bar’ compared to NULL [-Wnonnull]
 void foo(void *bar) { if (!bar) abort(); }
                           ^
gcc/ChangeLog

* doc/invoke.texi (Wnonnull): Also warns when comparing against NULL.

gcc/c/ChangeLog

       * c-typeck.c (build_binary_op): Check and warn when nonnull arg
       parm against NULL.

gcc/cp/ChangeLog

       * typeck.c (cp_build_binary_op): Check and warn when nonnull arg
       parm against NULL.

gcc/testsuite/ChangeLog

       * c-c++-common/nonnull-1.c: New test.

From-SVN: r227649
gcc/ChangeLog
gcc/c/ChangeLog
gcc/c/c-typeck.c
gcc/cp/ChangeLog
gcc/cp/typeck.c
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/nonnull-1.c [new file with mode: 0644]