[Bug middle-end/78914] New: missing -Wnonnull for a trivial null pointer dereference
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Dec 23 23:24:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78914
Bug ID: 78914
Summary: missing -Wnonnull for a trivial null pointer
dereference
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
Now that the -Wnonnull warning has been made smarter (bug 17308) it would be
nice if, in addition to calls to functions declared with attribute nonnnull, it
could also diagnose other null pointer dereferences such as the one in the test
case below. As is evident from __builtin_trap() in the dump, GCC already
"knows" that the pointer being dereferenced is null, but issuing a warning
would help catch that case earlier than at runtime.
$ cat z.c && gcc -O2 -S -Wall -Wextra -Wpedantic
-fdump-tree-optimized=/dev/stdout z.c
struct S { int i; };
int foo (struct S *s)
{
if (s)
return 6;
return s->i;
}
;; Function foo (foo, funcdef_no=0, decl_uid=1797, cgraph_uid=0,
symbol_order=0)
foo (struct S * s)
{
int _4;
<bb 2> [100.00%]:
if (s_2(D) != 0B)
goto <bb 4>; [51.18%]
else
goto <bb 3>; [48.82%]
<bb 3> [48.82%]:
_4 ={v} MEM[(struct S *)0B].i;
__builtin_trap ();
<bb 4> [100.00%]:
return 6;
}
More information about the Gcc-bugs
mailing list