-
- Downloads
analyzer: fix false +ves from -Wanalyzer-deref-before-check due to inlining [PR109239]
The patch has this effect on my integration tests of -fanalyzer:
Comparison:
GOOD: 129 (17.70% -> 17.92%)
BAD: 600 -> 591 (-9)
which is purely due to improvements to -Wanalyzer-deref-before-check
on the Linux kernel:
-Wanalyzer-deref-before-check:
GOOD: 1 (4.55% -> 7.69%)
BAD: 21 -> 12 (-9)
Known false positives: 16 -> 10 (-6)
linux-5.10.162: 7 -> 1 (-6)
Suspected false positives: 3 -> 0 (-3)
linux-5.10.162: 3 -> 0 (-3)
gcc/analyzer/ChangeLog:
PR analyzer/109239
* program-point.cc: Include "analyzer/inlining-iterator.h".
(program_point::effectively_intraprocedural_p): New function.
* program-point.h (program_point::effectively_intraprocedural_p):
New decl.
* sm-malloc.cc (deref_before_check::emit): Use it when rejecting
interprocedural cases, so that we reject interprocedural cases
that have become intraprocedural due to inlining.
gcc/testsuite/ChangeLog:
PR analyzer/109239
* gcc.dg/analyzer/deref-before-check-pr109239-linux-bus.c: New test.
Signed-off-by:
David Malcolm <dmalcolm@redhat.com>
Showing
- gcc/analyzer/program-point.cc 42 additions, 0 deletionsgcc/analyzer/program-point.cc
- gcc/analyzer/program-point.h 3 additions, 0 deletionsgcc/analyzer/program-point.h
- gcc/analyzer/sm-malloc.cc 5 additions, 4 deletionsgcc/analyzer/sm-malloc.cc
- gcc/testsuite/gcc.dg/analyzer/deref-before-check-pr109239-linux-bus.c 153 additions, 0 deletions...e/gcc.dg/analyzer/deref-before-check-pr109239-linux-bus.c
Loading
Please register or sign in to comment