]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/58356 (ICE with finalization and type extension)
authorTobias Burnus <burnus@net-b.de>
Mon, 16 Sep 2013 18:01:59 +0000 (20:01 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Mon, 16 Sep 2013 18:01:59 +0000 (20:01 +0200)
2013-09-16  Tobias Burnus  <burnus@net-b.de>

        PR fortran/58356
        * class.c (generate_finalization_wrapper): Init proc_tree if
        not yet resolved.

2013-09-16  Tobias Burnus  <burnus@net-b.de>

        PR fortran/58356
        * gfortran.dg/finalize_19.f90: New.

From-SVN: r202633

gcc/fortran/ChangeLog
gcc/fortran/class.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/finalize_19.f90 [new file with mode: 0644]

index 0f73dfe5f90852ba4365621c7ce07c2cc8ecaa3e..37c59506e54099cbd05e76a9c26430f561712a10 100644 (file)
@@ -1,3 +1,9 @@
+2013-09-16  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/58356
+       * class.c (generate_finalization_wrapper): Init proc_tree if
+       not yet resolved.
+
 2013-09-16  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/57697
index 629b052fb32dddc9cd0601cfe7238d868178a11f..7117e8361564e174db90d3c65eaf0c1d75e80f6a 100644 (file)
@@ -1881,6 +1881,8 @@ generate_finalization_wrapper (gfc_symbol *derived, gfc_namespace *ns,
 
       for (fini = derived->f2k_derived->finalizers; fini; fini = fini->next)
        {
+         if (!fini->proc_tree)
+           fini->proc_tree = gfc_find_sym_in_symtree (fini->proc_sym);
          if (fini->proc_tree->n.sym->attr.elemental)
            {
              fini_elem = fini;
index 5971d1fd1b67bf077b8f24fc887fb3ed099c06f1..f606965c88d84e2227fad9ef1eecdc03be1eafa8 100644 (file)
@@ -1,3 +1,8 @@
+2013-09-16  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/58356
+       * gfortran.dg/finalize_19.f90: New.
+
 2013-09-16  Vladimir Makarov  <vmakarov@redhat.com>
 
        * gcc.target/i386/pr58418.c: New.
diff --git a/gcc/testsuite/gfortran.dg/finalize_19.f90 b/gcc/testsuite/gfortran.dg/finalize_19.f90
new file mode 100644 (file)
index 0000000..1eeb6af
--- /dev/null
@@ -0,0 +1,21 @@
+! { dg-do compile }
+!
+! PR fortran/58356
+!
+! Contributed by Andrew Benson
+!
+module ct
+  type :: cfl
+   contains
+     final :: cfld
+  end type cfl
+  type, extends(cfl) :: cfde
+   contains
+  end type cfde
+contains
+  subroutine cfld(self)
+    implicit none
+    type(cfl), intent(inout) :: self
+    return
+  end subroutine cfld
+end module ct