[Bug analyzer/98293] [11 Regression] ICE in get_subregion_within_ctor, at analyzer/store.cc:494

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jan 5 00:21:08 GMT 2021


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

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

https://gcc.gnu.org/g:15af33a88065f983181550fc53821f1c6e14c5c7

commit r11-6452-g15af33a88065f983181550fc53821f1c6e14c5c7
Author: David Malcolm <dmalcolm@redhat.com>
Date:   Mon Jan 4 19:20:32 2021 -0500

    analyzer: fix ICE with -fsanitize=undefined [PR98293]

    -fsanitize=undefined with calls to nonnull functions
    creates struct __ubsan_nonnull_arg_data instances
    with CONSTRUCTORs for RECORD_TYPEs with NULL index values.
    The analyzer was mistakenly using INTEGER_CST for these
    fields, leading to ICEs.

    Fix the issue by iterating through the fields in the type
    for such cases, imitating similar logic in varasm.c's
    output_constructor.

    gcc/analyzer/ChangeLog:
            PR analyzer/98293
            * store.cc (binding_map::apply_ctor_to_region): When "index" is
            NULL, iterate through the fields for RECORD_TYPEs, rather than
            creating an INTEGER_CST index.

    gcc/testsuite/ChangeLog:
            PR analyzer/98293
            * gcc.dg/analyzer/pr98293.c: New test.


More information about the Gcc-bugs mailing list