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

--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-12 branch has been updated by Eric Botcazou
<ebotca...@gcc.gnu.org>:

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

commit r12-10881-ge8b53a5263946be717169e2549eabf67e6a227ad
Author: Marc Poulhiès <poulh...@adacore.com>
Date:   Mon Mar 27 16:47:04 2023 +0200

    ada: Fix crash on vector initialization

    Initializing a vector using

     Vec : V.Vector := [Some_Type'(Some_Abstract_Type with F => 0)];

    may crash the compiler. The expander marks the N_Extension_Aggregate for
    delayed expansion which never happens and incorrectly ends up in gigi.

    The delayed expansion is needed for nested aggregates, which the
    original code is testing for, but container aggregates are handled
    differently.

    Such assignments to container aggregates are later transformed into
    procedure calls to the procedures named in the Aggregate aspect
    definition, for which the delayed expansion is not required/expected.

    gcc/ada/
            PR ada/118234
            * exp_aggr.adb (Convert_To_Assignments): Do not mark node for
            delayed expansion if parent type has the Aggregate aspect.
            * sem_util.adb (Is_Container_Aggregate): Move...
            * sem_util.ads (Is_Container_Aggregate): ... here and make it
            public.

Reply via email to