re PR c++/86210 (Missing -Wnonnull warning for function defined in the same TU)

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: r261811
This commit is contained in:
Jakub Jelinek 2018-06-20 18:07:21 +02:00 committed by Jakub Jelinek
parent d9addf3344
commit f41b7612a9
4 changed files with 34 additions and 4 deletions

View file

@ -1,3 +1,9 @@
2018-06-20 Jakub Jelinek <jakub@redhat.com>
PR c++/86210
* c-common.c (check_nonnull_arg): Use fold_for_warn. Adjust obsolete
comment.
2018-06-18 Martin Sebor <msebor@redhat.com>
PR middle-end/85602

View file

@ -5404,10 +5404,8 @@ check_nonnull_arg (void *ctx, tree param, unsigned HOST_WIDE_INT param_num)
if (TREE_CODE (TREE_TYPE (param)) != POINTER_TYPE)
return;
/* When not optimizing diagnose the simple cases of null arguments.
When optimization is enabled defer the checking until expansion
when more cases can be detected. */
if (integer_zerop (param))
/* Diagnose the simple cases of null arguments. */
if (integer_zerop (fold_for_warn (param)))
{
warning_at (pctx->loc, OPT_Wnonnull, "null argument where non-null "
"required (argument %lu)", (unsigned long) param_num);

View file

@ -1,3 +1,8 @@
2018-06-20 Jakub Jelinek <jakub@redhat.com>
PR c++/86210
* g++.dg/warn/Wnonnull4.C: New test.
2018-06-20 Marek Polacek <polacek@redhat.com>
PR c++/86240

View file

@ -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;
}