re PR fortran/37336 ([F03] Finish derived-type finalization)
authorTobias Burnus <burnus@gcc.gnu.org>
Tue, 4 Jun 2013 10:20:32 +0000 (12:20 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Tue, 4 Jun 2013 10:20:32 +0000 (12:20 +0200)
commitef2925370ee74f7b0d0845affc35b0030848b5ae
treebc5eafdea238518ce5c6c9b8cd674dc39145b8b3
parentaadaf24ef0336560cb808406da288878a6120ca2
re PR fortran/37336 ([F03] Finish derived-type finalization)

2013-06-03  Tobias Burnus  <burnus@net-b.de>

        PR fortran/37336
        * trans.h (gfc_build_final_call): Remove prototype.
        (gfc_add_finalizer_call): Add prototype.
        * trans-array.c (gfc_trans_dealloc_allocated): Support
        * finalization.
        (structure_alloc_comps): Update caller.
        (gfc_trans_deferred_array): Call finalizer.
        * trans-array.h (gfc_trans_dealloc_allocated): Update prototype.
        * trans-decl.c (gfc_trans_deferred_vars): Don't
        * deallocate/finalize
        variables of the main program.
        * trans-expr.c (gfc_conv_procedure_call): Support finalization.
        * trans-openmp.c (gfc_omp_clause_dtor,
        gfc_trans_omp_array_reduction): Update calls.
        * trans-stmt.c (gfc_trans_deallocate): Avoid double deallocation
        of alloc components.
        * trans.c (gfc_add_finalizer_call): New function.
        (gfc_deallocate_with_status,
        gfc_deallocate_scalar_with_status): Call it
        (gfc_build_final_call): Fix handling of scalar coarrays,
        move up in the file and make static.

2013-06-03  Tobias Burnus  <burnus@net-b.de>

        PR fortran/37336
        * gfortran.dg/finalize_12.f90: New.
        * gfortran.dg/alloc_comp_basics_1.f90: Add BLOCK for
        end of scope finalization.
        * gfortran.dg/alloc_comp_constructor_1.f90: Ditto.
        * gfortran.dg/allocatable_scalar_9.f90: Ditto.
        * gfortran.dg/auto_dealloc_2.f90: Ditto.
        * gfortran.dg/class_19.f03: Ditto.
        * gfortran.dg/coarray_lib_alloc_1.f90: Ditto.
        * gfortran.dg/coarray_lib_alloc_2.f90: Ditto.
        * gfortran.dg/extends_14.f03: Ditto.
        * gfortran.dg/move_alloc_4.f90: Ditto.
        * gfortran.dg/typebound_proc_27.f03: Ditto.

From-SVN: r199643
23 files changed:
gcc/fortran/ChangeLog
gcc/fortran/trans-array.c
gcc/fortran/trans-array.h
gcc/fortran/trans-decl.c
gcc/fortran/trans-expr.c
gcc/fortran/trans-openmp.c
gcc/fortran/trans-stmt.c
gcc/fortran/trans.c
gcc/fortran/trans.h
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90
gcc/testsuite/gfortran.dg/alloc_comp_constructor_1.f90
gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90
gcc/testsuite/gfortran.dg/auto_dealloc_2.f90
gcc/testsuite/gfortran.dg/class_19.f03
gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
gcc/testsuite/gfortran.dg/extends_14.f03
gcc/testsuite/gfortran.dg/finalize_12.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/finalize_13.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/finalize_14.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/move_alloc_4.f90
gcc/testsuite/gfortran.dg/typebound_proc_27.f03