https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109239

--- Comment #1 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Malcolm <dmalc...@gcc.gnu.org>:

https://gcc.gnu.org/g:0c652ebbf79bd168766097f3ac4c1b3b79d68a43

commit r13-6800-g0c652ebbf79bd168766097f3ac4c1b3b79d68a43
Author: David Malcolm <dmalc...@redhat.com>
Date:   Wed Mar 22 08:40:34 2023 -0400

    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 <dmalc...@redhat.com>

Reply via email to