Commit f41b7612 by Jakub Jelinek Committed by Jakub Jelinek

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
parent d9addf33
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> 2018-06-18 Martin Sebor <msebor@redhat.com>
PR middle-end/85602 PR middle-end/85602
......
...@@ -5404,10 +5404,8 @@ check_nonnull_arg (void *ctx, tree param, unsigned HOST_WIDE_INT param_num) ...@@ -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) if (TREE_CODE (TREE_TYPE (param)) != POINTER_TYPE)
return; return;
/* When not optimizing diagnose the simple cases of null arguments. /* Diagnose the simple cases of null arguments. */
When optimization is enabled defer the checking until expansion if (integer_zerop (fold_for_warn (param)))
when more cases can be detected. */
if (integer_zerop (param))
{ {
warning_at (pctx->loc, OPT_Wnonnull, "null argument where non-null " warning_at (pctx->loc, OPT_Wnonnull, "null argument where non-null "
"required (argument %lu)", (unsigned long) param_num); "required (argument %lu)", (unsigned long) param_num);
......
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> 2018-06-20 Marek Polacek <polacek@redhat.com>
PR c++/86240 PR c++/86240
......
// 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment