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

--- Comment #14 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jason Merrill <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:119cea98f664764cce04963243c39c8f6d797d33

commit r12-7069-g119cea98f664764cce04963243c39c8f6d797d33
Author: Jason Merrill <ja...@redhat.com>
Date:   Wed Feb 2 18:36:41 2022 -0500

    c++: assignment, aggregate, array [PR104300]

    The PR92385 fix meant that we see more VEC_INIT_EXPR outside of INIT_EXPR;
    in such cases, we need to wrap them in TARGET_EXPR.  I previously fixed
    that in build_array_copy; we also need it in process_init_constructor.
    After fixing that, I needed to adjust a few places to recognize the
    VEC_INIT_EXPR even inside a TARGET_EXPR.  And prevent cp_fully_fold_init
    from lowering VEC_INIT_EXPR too soon.  And handle COMPOUND_EXPR inside
    TARGET_EXPR better.

            PR c++/104300
            PR c++/92385

    gcc/cp/ChangeLog:

            * cp-tree.h (get_vec_init_expr): New.
            (target_expr_needs_replace): New.
            * cp-gimplify.cc (cp_gimplify_init_expr): Use it.
            (struct cp_fold_data): New.
            (cp_fold_r): Only genericize inits at end of fn.
            (cp_fold_function): Here.
            (cp_fully_fold_init): Not here.
            * init.cc (build_vec_init): Use get_vec_init_expr.
            * tree.cc (build_vec_init_expr): Likewise.
            * typeck2.cc (split_nonconstant_init_1): Likewise.
            (process_init_constructor): Wrap VEC_INIT_EXPR in
            TARGET_EXPR.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp0x/initlist-array14.C: New test.

Reply via email to