https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98541
Bug ID: 98541
Summary: warning with -Wnonnull for array parameter with bound
> 0
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: muecker at gwdg dot de
Target Milestone: ---
In the example
void foo(int n, double x[n]);
void f(void)
{
foo(1, 0);
}
there is a warning
x.c: In function ‘f’:
x.c:7:9: warning: argument 1 of variable length array ‘double[n]’ is null but
the corresponding bound argument 2 value is 1 [-Wnonnull]
7 | foo(1, 0);
| ^~~~~~~~~
x.c:3:6: note: in a call to function ‘foo’
3 | void foo(int n, double x[n]);
| ^~~
But the bound > 0 does not imply that 'x' is not NULL. (static would imply
this). There is also no warning with a constant bound > 0.
Passing NULL is useful for optional arguments and when the bound is shared
between different parameters, it can not be passed as zero.