Hi Mikael,

> Gesendet: Freitag, 26. November 2021 um 15:45 Uhr
> Von: "Mikael Morin" <morin-mik...@orange.fr>
> An: "Harald Anlauf" <anl...@gmx.de>, fort...@gcc.gnu.org
> Cc: gcc-patches@gcc.gnu.org
> Betreff: Re: [PATCH, v2] PR fortran/103411 - ICE in 
> gfc_conv_array_initializer, at fortran/trans-array.c:6377
>
> Le 25/11/2021 à 22:52, Harald Anlauf a écrit :
>  >
>  > Motivated by your reasoning I tried gfc_reduce_init_expr.  That attempt
>  > failed miserably (many regressions), and I think it is not right.
> 
>  > Then I found that array sections posed a problem that wasn't detected
>  > before.  gfc_simplify_expr seemed to be a better choice that makes more
>  > sense for the present situations and seems to work here.  And it even
>  > detects many more invalid cases now than e.g. Intel ;-)
>  >
> Great let’s go with that.
> Can you set shape_is_constant just after the simplification?
> That is
> 
>    gfc_simplify_expr (shape, 0);
>    if (gfc_is_constant_expr (shape))
>      shape_is_const = true;
> 
>    if (shape->expr_type == EXPR_ARRAY && shape_is_const)
>      ...
> 
> 
> This removes the need for multiple case initialization of shape_is_const 
> which I overlooked in my previous review.
> 
> And the EXPR_ARRAY vs EXPR_VARIABLE change becomes unneeded because the 
> simplification should produce an EXPR_ARRAY.

ah, I did not expect that.  And indeed it seems to do the job!  Furthermore
it turns out that the new patch (v3) removes more code than it adds. :-)

I extended the testcase slightly and regtested again.

That should hopefully be the final version...

Thanks for the really constructive comments!

Harald

Attachment: 0001-Fortran-improve-check-of-arguments-to-the-RESHAPE-in.patch.v3
Description: Binary data

Reply via email to