Hello world,

the attached patch attempts to fix PR 87352, a 7/8/9 regression (where
there were far too many deallocations in a derived type containing
allocatable arrays) by making sure that no component is finalized more
than once.

This seemed to be a safer, and simpler, approach to me than to try
to change where, and when double finalization might occur and
when it might be safe to remove it.

This might also cure PR 84487 but, of course, SPEC is closed source,
so I cannot check.

@Jeremy: Can you confirm that this fixes the excessive compile time
and code size issue for you?

OK for trunk and backporting?

Regards

        Thomas

2019-03-31  Thomas Koenig  <tkoe...@gcc.gnu.org>

        PR fortran/87352
        * gfortran.h (gfc_component): Add finalized field.
        * class.c (finalize_component): If the component is already
        finalized, return early.  Set component->finalized on exit.

2019-03-31  Thomas Koenig  <tkoe...@gcc.gnu.org>

        PR fortran/87352
        * gfortran.dg/finalize_28.f90: Adjust count of __builtin_free.
        * gfortran.dg/finalize_33.f90: Likewise.
        * gfortran.dg/finalize_34.f90: New test.

Reply via email to