[Bug fortran/86481] [OOP] Memory leak with sourced allocation

pault at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Aug 28 11:36:00 GMT 2018


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

--- Comment #5 from Paul Thomas <pault at gcc dot gnu.org> ---
Author: pault
Date: Tue Aug 28 11:35:52 2018
New Revision: 263916

URL: https://gcc.gnu.org/viewcvs?rev=263916&root=gcc&view=rev
Log:
2017-08-28  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/80477
        * trans-expr.c (gfc_conv_procedure_call): Allocatable class
        scalar results being passed to a derived type formal argument
        are finalized if possible. Otherwise, rely on existing code for
        deallocation. Make the deallocation of allocatable result
        components conditional on finalization not taking place. Make
        the freeing of data components after finalization conditional
        on the data being NULL.
        (gfc_trans_arrayfunc_assign): Change the gcc_assert to a
        condition to return NULL_TREE.
        (gfc_trans_assignment_1): If the assignment is class to class
        and the rhs expression must be finalized but the assignment
        is not marked as a polymorphic assignment, use the vptr copy
        function instead of gfc_trans_scalar_assign.

        PR fortran/86481
        * trans-expr.c (gfc_conv_expr_reference): Do not add the post
        block to the pre block if the expression is to be finalized.
        * trans-stmt.c (gfc_trans_allocate): If the expr3 must be
        finalized, load the post block into a finalization block and
        add it right at the end of the allocation block.

2017-08-28  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/80477
        * gfortran.dg/class_result_7.f90: New test.
        * gfortran.dg/class_result_8.f90: New test.
        * gfortran.dg/class_result_9.f90: New test.

        PR fortran/86481
        * gfortran.dg/allocate_with_source_25.f90: New test.

Added:
    trunk/gcc/testsuite/gfortran.dg/allocate_with_source_25.f90
    trunk/gcc/testsuite/gfortran.dg/class_result_7.f90
    trunk/gcc/testsuite/gfortran.dg/class_result_8.f90
    trunk/gcc/testsuite/gfortran.dg/class_result_9.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-expr.c
    trunk/gcc/fortran/trans-stmt.c
    trunk/gcc/testsuite/ChangeLog


More information about the Gcc-bugs mailing list