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

--- Comment #5 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:cc68ad87014a331399ccb2528db3bf47fabe6f72

commit r12-7199-gcc68ad87014a331399ccb2528db3bf47fabe6f72
Author: David Malcolm <dmalc...@redhat.com>
Date:   Thu Feb 10 19:01:30 2022 -0500

    analyzer: ignore uninitialized uses of empty types [PR104274]

    PR analyzer/104274 reports a false positive from
    -Wanalyzer-use-of-uninitialized-value on hppa when passing
    an empty struct as a function parameter.

    pa_pass_by_reference returns true for empty structs, so the
    call is turned into:

      struct empty arg.0;
      arg.0 = arg
      called_function (arg.0);

    by gimplify_parameters.

    However, gimplify_modify_expr discards assignments statments
    of empty types, so that we end up with:

      struct empty arg.0;
      called_function (arg.0);

    which the analyzer considers to be a use of uninitialized "arg.0";

    Given that gimplify_modify_expr will discard any assignments to
    such types, it seems simplest for -Wanalyzer-use-of-uninitialized-value
    to ignore values of empty types.

    gcc/analyzer/ChangeLog:
            PR analyzer/104274
            * region-model.cc (region_model::check_for_poison): Ignore
            uninitialized uses of empty types.

    gcc/testsuite/ChangeLog:
            PR analyzer/104274
            * gcc.dg/analyzer/torture/empty-struct-1.c: New test.

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

Reply via email to