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

--- Comment #2 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:69b66ff02353a87585329bb3cf4ac20d6dee1b16

commit r11-7987-g69b66ff02353a87585329bb3cf4ac20d6dee1b16
Author: David Malcolm <dmalc...@redhat.com>
Date:   Mon Apr 5 10:48:01 2021 -0400

    analyzer: fix apparent hang with -fanalyzer-verbosity=0 [PR analyzer/99886]

    The analyzer appeared to enter an infinite loop on malloc-1.c
    when -fanalyzer-verbosity=0 was used.  In fact, it was slowly
    counting from 0 to 0xffffffff.

    Root cause is looping up to effectively ((unsigned)0) - 1 in
    diagnostic_manager::consolidate_conditions when there are no events
    in the path.

    Fixed by the following, which uses signed integers when subtracting
    from path->num_events () when simplifying checker_paths.

    gcc/analyzer/ChangeLog:
            PR analyzer/99886
            * diagnostic-manager.cc
            (diagnostic_manager::prune_interproc_events): Use signed integers
            when subtracting one from path->num_events ().
            (diagnostic_manager::consolidate_conditions): Likewise.  Convert
            next_idx to a signed int.

    gcc/testsuite/ChangeLog:
            PR analyzer/99886
            * gcc.dg/analyzer/pr99886.c: New test.

Reply via email to