2008-06-02 Daniel Kraft <d@domob.eu>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 2 Jun 2008 20:03:03 +0000 (20:03 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 2 Jun 2008 20:03:03 +0000 (20:03 +0000)
commit223f0f576a9c3164a833214037e8841661d0aa1a
treef807af3263648b3c930fb63529f59d6393a35f3e
parentdea92435ad6ed261615eb4aa675a9b2a6eb4edd4
2008-06-02  Daniel Kraft  <d@domob.eu>

        * gfortran.h:  New statement-type ST_FINAL for FINAL declarations.
        (struct gfc_symbol):  New member f2k_derived.
        (struct gfc_namespace):  New member finalizers, for use in the above
        mentioned f2k_derived namespace.
        (struct gfc_finalizer):  New type defined for finalizers linked list.
        * match.h (gfc_match_final_decl):  New function header.
        * decl.c (gfc_match_derived_decl):  Create f2k_derived namespace
        on constructed symbol node.
        (gfc_match_final_decl):  New function to match a FINAL declaration line.
        * parse.c (decode_statement):  match-call for keyword FINAL.
        (parse_derived):  Parse CONTAINS section and accept FINAL statements.
        * resolve.c (gfc_resolve_finalizers):  New function to resolve
        (that is in this case, check) a list of finalizer procedures.
        (resolve_fl_derived):  Call gfc_resolve_finalizers here.
        * symbol.c (gfc_get_namespace):  Initialize new finalizers to NULL.
        (gfc_free_namespace):  Free finalizers list.
        (gfc_new_symbol):  Initialize new f2k_derived to NULL.
        (gfc_free_symbol):  Free f2k_derived namespace.
        (gfc_free_finalizer):  New function to free a single gfc_finalizer node.
        (gfc_free_finalizer_list):  New function to free a linked list of
        gfc_finalizer nodes.

2008-06-02  Daniel Kraft  <d@domob.eu>

        * finalize_1.f08:  New test.
        * finalize_2.f03:  New test.
        * finalize_3.f03:  New test.
        * finalize_4.f03:  New test.
        * finalize_5.f03:  New test.
        * finalize_6.f90:  New test.
        * finalize_7.f03:  New test.
        * finalize_8.f03:  New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@136293 138bc75d-0d04-0410-961f-82ee72b054a4
16 files changed:
gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/fortran/gfortran.h
gcc/fortran/match.h
gcc/fortran/parse.c
gcc/fortran/resolve.c
gcc/fortran/symbol.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/finalize_1.f08 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/finalize_2.f03 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/finalize_3.f03 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/finalize_4.f03 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/finalize_5.f03 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/finalize_6.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/finalize_7.f03 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/finalize_8.f03 [new file with mode: 0644]