Re: [Patch, fortran] PR121972 - [PDT] Fix for the pdt_86 leak.

Harald Anlauf <[email protected]> Mon, 22 Jun 2026 22:35:00 +0200
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
Hi Jerry!

Am 22.06.26 um 8:37 PM schrieb Jerry D:
> See attached patch.
> 
> Regression tested on x86_64.
> 
> A new test case is added to asan to catch this in the future.

I'd rather leave the review to Paul, but I have one question:
As is, the new helper has_class_alloc_comp might return true for
pointer components, but I think it should not.

Can you please check?

Cheers,
Harald

> OK for mainline.
> 
> Regards,
> 
> Jerry
> ---
> fortran: Fix memory leak for array structure-constructor element [PR121972]
> 
> Fix the remaining leak in pdt_86.f03. Added a new test in asan to avoid it.
> 
>    PR fortran/121972
> 
> gcc/fortran/ChangeLog:
> 
>    * trans-array.cc (has_class_alloc_comp): New helper; returns true if
>    derived type DER has any CLASS component.
>    (gfc_trans_array_ctor_element): Also free allocatable components when
>    the element expression is EXPR_STRUCTURE, skipping types that contain
>    CLASS components to avoid freeing stack-allocated _data pointers.
>    (gfc_constructor_is_owned_alloc_comp): Likewise treat EXPR_STRUCTURE
>    elements as owned only when the derived type has no CLASS components.
>    * trans-expr.cc (gfc_trans_alloc_subarray_assign): Free allocatable
>    components of the component's temporary descriptor before nulling its
>    data pointer, for non-variable source expressions.
> 
> gcc/testsuite/ChangeLog:
> 
>    * gfortran.dg/class_array_15.f03: Adjust expected free count.
>    * gfortran.dg/derived_constructor_comps_6.f90: Adjust expected free 
> count.
>    * gfortran.dg/asan/structure_constructor_alloc_comp_leak_1.f90: New 
> test.
> ---
> 
> 
> 
> 
> 
> 
> 
>