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

--- 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:9b4eee5fd158c4ee75d1f1000debbf5082fb9b56

commit r12-6997-g9b4eee5fd158c4ee75d1f1000debbf5082fb9b56
Author: David Malcolm <dmalc...@redhat.com>
Date:   Fri Jan 28 11:02:09 2022 -0500

    analyzer: stop -ftrivial-auto-var-init from suppressing uninit warnings
[PR104270]

    GCC 12 has gained two features for dealing with uninitialized variables:

    (a) a new -Wanalyzer-use-of-uninitialized-value warning within -fanalyzer
    for interprocedural path-sensitive detection of ununit uses, and

    (b) a new -ftrivial-auto-var-init option for mitigating some uses of
    uninit variables

    It turns out that using (b) was thwarting (a), as it led to -fanalyzer
    seeing calls to IFN_DEFERRED_INIT, which -fanalyzer wasn't
    special-casing, thus treating it as initializing the variables in
    question, and thus silencing -Wanalyzer-use-of-uninitialized-value on
    them.

    invoke.texi says:

    "GCC still considers an automatic variable that doesn't have an explicit
    initializer as uninitialized, @option{-Wuninitialized} will still report
    warning messages on such automatic variables."

    and thus -Wanalyzer-use-of-uninitialized-value ought to as well.

    This patch adds special-case handling to -fanalyzer for
    IFN_DEFERRED_INIT,  so that -fanalyzer will warn on uninit uses of
    variables that are mitigated by -ftrivial-auto-var-init.

    gcc/analyzer/ChangeLog:
            PR analyzer/104270
            * region-model.cc (region_model::on_call_pre): Handle
            IFN_DEFERRED_INIT.

    gcc/testsuite/ChangeLog:
            PR analyzer/104270
            * gcc.dg/analyzer/uninit-trivial-auto-var-init-pattern.c: New
            test.
            * gcc.dg/analyzer/uninit-trivial-auto-var-init-uninitialized.c:
            New test.
            * gcc.dg/analyzer/uninit-trivial-auto-var-init-zero.c: New test.

    Signed-off-by: David Malcolm <dmalc...@redhat.com>

Reply via email to