From: Jakub Jelinek Date: Mon, 25 Jun 2018 17:54:30 +0000 (+0200) Subject: backport: re PR c++/86210 (Missing -Wnonnull warning for function defined in the... X-Git-Tag: releases/gcc-6.5.0~183 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=96647616908a701d5f1c0b6637ea48cc8192d93b;p=thirdparty%2Fgcc.git backport: re PR c++/86210 (Missing -Wnonnull warning for function defined in the same TU) Backported from mainline 2018-06-20 Jakub Jelinek PR c++/86210 * c-common.c (check_nonnull_arg): Use fold_for_warn. Adjust obsolete comment. * g++.dg/warn/Wnonnull4.C: New test. From-SVN: r262102 --- diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index c9f7773022d8..7ff31517eadc 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,6 +1,12 @@ 2018-06-25 Jakub Jelinek Backported from mainline + 2018-06-20 Jakub Jelinek + + PR c++/86210 + * c-common.c (check_nonnull_arg): Use fold_for_warn. Adjust obsolete + comment. + 2017-11-21 Jakub Jelinek PR c++/83059 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index ad029ea6b3d2..0c353b88fc95 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -9249,7 +9249,7 @@ check_nonnull_arg (void *ctx, tree param, unsigned HOST_WIDE_INT param_num) if (TREE_CODE (TREE_TYPE (param)) != POINTER_TYPE) return; - if (integer_zerop (param)) + if (integer_zerop (fold_for_warn (param))) warning_at (*ploc, OPT_Wnonnull, "null argument where non-null required " "(argument %lu)", (unsigned long) param_num); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9621f65c96f4..ccbbdae8d80a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,9 @@ Backported from mainline 2018-06-20 Jakub Jelinek + PR c++/86210 + * g++.dg/warn/Wnonnull4.C: New test. + PR tree-optimization/86231 * gcc.dg/tree-ssa/vrp119.c: New test. * gcc.c-torture/execute/pr86231.c: New test. diff --git a/gcc/testsuite/g++.dg/warn/Wnonnull4.C b/gcc/testsuite/g++.dg/warn/Wnonnull4.C new file mode 100644 index 000000000000..d07a4452ddb5 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wnonnull4.C @@ -0,0 +1,21 @@ +// PR c++/86210 +// { dg-do compile } +// { dg-options "-Wnonnull" } + +void *declared_not_defined (void *p) __attribute__((nonnull)); + +inline void *declared_and_defined (void *p) __attribute__((nonnull)); + +int +main () +{ + int *const p = 0; + declared_not_defined (p); // { dg-warning "null argument where non-null required" } + declared_and_defined (p); // { dg-warning "null argument where non-null required" } +} + +void * +declared_and_defined (void *p) +{ + return p; +}