[Bug c++/96021] New: missing -Wnonnull passing nullptr to a nonnull variadic lambda
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jul 1 16:24:19 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96021
Bug ID: 96021
Summary: missing -Wnonnull passing nullptr to a nonnull
variadic lambda
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
G++ issues -Wnonnull when passing nullptr to ordinary variadic functions but
not for the same problem involving variadic lambdas or unspecialized templates.
I believe the problem is due to the -Wnonull warning checking for arguments of
pointer types and the nullptr constant not having such a type.
$ cat q.C && gcc -O2 -S -Wall q.C
__attribute__ ((nonnull)) void f (int, ...);
void ff ()
{
f (1, nullptr); // -Wnonnull (good)
}
template <class T> void g (T t)
{
t (1, nullptr); // missing -Wnonnull
}
void gg (void)
{
g ([](int, auto...) __attribute__ ((nonnull)) { });
}
template <class T> __attribute__ ((nonnull)) void h (T);
void hh ()
{
h (nullptr); // missing -Wnonnull
}
q.C: In function ‘void ff()’:
q.C:4:16: warning: argument 2 null where non-null expected [-Wnonnull]
4 | f (1, nullptr); // -Wnonnull (good)
| ^
q.C:1:32: note: in a call to function ‘void f(int, ...)’ declared ‘nonnull’
1 | __attribute__ ((nonnull)) void f (int, ...);
| ^
More information about the Gcc-bugs
mailing list