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

Steve Kargl <kargl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kargl at gcc dot gnu.org

--- Comment #3 from Steve Kargl <kargl at gcc dot gnu.org> ---
(In reply to Paul Thomas from comment #2)
> (In reply to Paul Thomas from comment #0)
> > The following is lifted from pr122578 comment 5:
> ...and is fixed by:
> 
> diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc
> index 2a73f2a7ab5..325b3fe2f8a 100644
> --- a/gcc/fortran/resolve.cc
> +++ b/gcc/fortran/resolve.cc
> @@ -9800,7 +9800,8 @@ done_errmsg:
>          execute loop invariant code for each loop item.  Therefore do it
> just
>          once here.  */
>        if (code->expr3 && code->expr3->mold
> -         && code->expr3->ts.type == BT_DERIVED)
> +         && code->expr3->ts.type == BT_DERIVED
> +         && !(code->expr3->ref && code->expr3->ref->type == REF_ARRAY))
>         {
>           /* Default initialization via MOLD (non-polymorphic).  */
>           gfc_expr *rhs = gfc_default_initializer (&code->expr3->ts);

Paul, if this passes regression testing, feel free to commit.

Reply via email to