[Patch] Fortran: Fix gfc_maybe_dereference_var [PR104430]

Harald Anlauf anlauf@gmx.de
Mon Mar 7 19:58:07 GMT 2022


Hi Tobias,

Am 07.03.22 um 15:01 schrieb Tobias Burnus:
> The problem is that inside the main program,
>    y = f(z)
> where the the result of z is
>    type(t) :: z(size(x%a))
> and 'x' is a dummy argument.
>
> 'x' looses the attr.dummy in gfc_add_interface_mapping
> and this leads to an additional indirect ref in
> gfc_maybe_dereference_var - but after the first indirect
> ref, TREE_TYPE is alread a RECORD_TYPE ...
>
> The simple fix is to simply punt when the argument
> is not a pointer or reference.
>
> This patch additionally fixes a comment in
> conv_parent_component_references.

LGTM.  Regarding the commit message, there should be a period
at the end of

 >        (gfc_maybe_dereference_var): Avoid derefereing a nonpointer


I think there are other PRs which profit from this fix.
Can you please have a look at PR99585, and in particular
the link in comment#0?  ;-)

> Those parts are obvious. The only potentially risky
> change is the comparison change from a name-wise comparison
> to a pointer-based comparison. I think it is fine and the
> testsuite did not find any issue, but you prefer, I can
> also exclude it.

I was thinking about this, too.  But your change will prevent
running into trouble in the (unlikely?) case c being a NULL pointer.

> OK for mainline? How about GCC 10/11 backports?
> (I think leaving out the last change, it should be very safe to do.)

OK, as this is both an ICE-on-valid and a regression.

Thanks for the patch!

Harald

> Tobias
> -----------------
> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201,
> 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer:
> Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München;
> Registergericht München, HRB 106955



More information about the Fortran mailing list