[Bug c/123424] [15/16 regression] ICE in comptypes_verify when handling a locally defined struct with a VLA member initialized from a mismatched parameter type.

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Mar 24 06:18:40 GMT 2026


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

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Martin Uecker <uecker@gcc.gnu.org>:

https://gcc.gnu.org/g:c4fe97077571e1831186a9a8a2fbb47cd8914269

commit r16-8261-gc4fe97077571e1831186a9a8a2fbb47cd8914269
Author: Martin Uecker <uecker@tugraz.at>
Date:   Sat Mar 7 16:28:00 2026 +0100

    c: Mark derived types variably-modified after struct/union completion
[PR123424]

    When structure types are completed and are variably-modified, we
    need to make sure that C_TYPE_VARIABLY_MODIFIED is updated also
    for derived types.  For derived types which are not updated and
    remain TYPE_STRUCTURAL_EQUALITY_P, we do recursion when checking
    the bit instead.  This change then fixes also a weird corner
    case when forming composite types of mutually recursively
    defined types.

    We do not update other structure or union type that end up
    with variably modified pointers, as it is not clear this is
    needed and also needs further analysis.

            PR c/123424

    gcc/c/ChangeLog:
            * c-decl.cc (c_update_variably_modified): New function.
            (finish_struct): Call c_update_variably_modified.
            * c-tree.h (c_variably_modified_p): Recurse if necessary.
            * c-typeck.cc (c_verify_type): Update.
            (c_set_type_bits): Use c_variably_modified_p.
            (mark_decl_used): Dito.
            (build_function_call_vec): Dito.
            (c_build_qualified_type): Dito.
            * c-objc-common.cc (c_var_p): Dito.

    gcc/testsuite/ChangeLog:
            * gcc.dg/gnu23-tag-composite-7.c: New test.
            * gcc.dg/gnu23-varmod-3.c: New test.
            * gcc.dg/pr123424.c: New test.


More information about the Gcc-bugs mailing list