[Bug tree-optimization/84315] New: missing -Wnonnull for trivial null pointer dereference
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Feb 9 17:52:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84315
Bug ID: 84315
Summary: missing -Wnonnull for trivial null pointer dereference
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
While testing my fix for pr84212 I noticed that even though GCC detects the
null pointer dereferences in the test cases below, the -Wnonnull warning fails
to point them out.
Test case 1:
$ cat b.c && gcc -O2 -S -Wall -Wnonnull -fdump-tree-optimized=/dev/stdout b.c
int main (void)
{
int *p = 0;
return p[123]; // missing -Wnonnull
}
;; Function main (main, funcdef_no=0, decl_uid=1950, cgraph_uid=0,
symbol_order=0) (executed once)
main ()
{
int _2;
<bb 2> [local count: 1073741825]:
_2 ={v} MEM[(int *)0B + 492B]; // null dereference
__builtin_trap (); // detected here
}
Test case 2:
$ cat b.c && gcc -O2 -S -Wall -Wnonnull -fdump-tree-optimized=/dev/stdout b.c
int a[8];
int* f (unsigned i)
{
return i < sizeof a ? a : 0;
}
int main (void)
{
int *p = f (sizeof a);
return *p; // missing -Wnonnull
}
;; Function f (f, funcdef_no=0, decl_uid=1951, cgraph_uid=0, symbol_order=1)
f (unsigned int i)
{
int * iftmp.0_1;
<bb 2> [local count: 1073741825]:
if (i_2(D) <= 31)
goto <bb 4>; [71.00%]
else
goto <bb 3>; [29.00%]
<bb 3> [local count: 311385128]:
<bb 4> [local count: 1073741825]:
# iftmp.0_1 = PHI <&a(2), 0B(3)>
return iftmp.0_1;
}
;; Function main (main, funcdef_no=1, decl_uid=1954, cgraph_uid=1,
symbol_order=2) (executed once)
main ()
{
int _2;
<bb 2> [local count: 1073741825]:
_2 ={v} MEM[(int *)0B]; // null dereference
__builtin_trap (); // detected here
}
More information about the Gcc-bugs
mailing list