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

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

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

commit r12-8215-gc049f638da4f7b32b11e4d895184e0960bae5291
Author: Fritz Reese <fore...@gcc.gnu.org>
Date:   Tue Apr 19 16:45:46 2022 -0400

    fortran: Fix conv of UNION constructors [PR105310]

    This fixes an ICE when a UNION is the (1+8*2^n)-th field in a DEC
    STRUCTURE when compiled with -finit-derived -finit-local-zero.
    The problem was CONSTRUCTOR_APPEND_ELT from within
gfc_conv_union_initializer
    modified the vector pointer, but the pointer was passed by-value,
    so the old pointer from the caller (gfc_conv_structure) pointed to freed
    memory.

            PR fortran/105310

    gcc/fortran/ChangeLog:

            * trans-expr.cc (gfc_conv_union_initializer): Pass vec* by
reference.

    gcc/testsuite/ChangeLog:

            * gfortran.dg/dec_union_12.f90: New test.

Reply via email to