]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
resolve.c (gfc_resolve_finalizers): Ensure that parents are resolved first.
authorTobias Burnus <burnus@net-b.de>
Sun, 17 Aug 2014 16:42:19 +0000 (18:42 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Sun, 17 Aug 2014 16:42:19 +0000 (18:42 +0200)
2014-08-17  Tobias Burnus  <burnus@net-b.de>

        * resolve.c (gfc_resolve_finalizers): Ensure that parents are
        resolved first.

2014-08-17  Tobias Burnus  <burnus@net-b.de>

        * gfortran.dg/finalize_27.f90: New.

From-SVN: r214076

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

index ce6857e30bc36af9e5c6a000bb667428e0437a2c..53d2691c6bb22da1e30d49eb7306d9b4c4e0640f 100644 (file)
@@ -1,3 +1,8 @@
+2014-08-17  Tobias Burnus  <burnus@net-b.de>
+
+       * resolve.c (gfc_resolve_finalizers): Ensure that parents are
+       resolved first.
+
 2014-08-17  Tobias Burnus  <burnus@net-b.de>
 
        * trans-io.c (gfc_build_io_library_fndecls): Fix decl of
index ea28ef4ad926ff05f8eb97eed8a4431a1deb8dae..32ff9dd00945c58e575ab0f295246b0fb49be0e0 100644 (file)
@@ -11416,6 +11416,10 @@ gfc_resolve_finalizers (gfc_symbol* derived, bool *finalizable)
   bool seen_scalar = false;
   gfc_symbol *vtab;
   gfc_component *c;
+  gfc_symbol *parent = gfc_get_derived_super_type (derived);
+
+  if (parent)
+    gfc_resolve_finalizers (parent, finalizable);
 
   /* Return early when not finalizable. Additionally, ensure that derived-type
      components have a their finalizables resolved.  */
index 27b724ded79aab3a9b3915543bd129eddfaf4690..f00434267c0a20cf363fd2f17bb1b16e4a4d76c2 100644 (file)
@@ -1,3 +1,7 @@
+2014-08-17  Tobias Burnus  <burnus@net-b.de>
+
+       * gfortran.dg/finalize_27.f90: New.
+
 2014-08-16  Andrew Pinski  <apinski@cavium.com>
 
        * gcc.c-torture/compile/20140816-1.c: New testcase.
diff --git a/gcc/testsuite/gfortran.dg/finalize_27.f90 b/gcc/testsuite/gfortran.dg/finalize_27.f90
new file mode 100644 (file)
index 0000000..bdc7c45
--- /dev/null
@@ -0,0 +1,25 @@
+! { dg-do compile }
+!
+! Was ICEing before
+!
+! Contributed by Reinhold Bader
+!
+
+module mod_fin_04
+  implicit none
+  type :: p_vec
+  contains
+     final :: delete
+  end type p_vec
+  type, extends(p_vec) :: bar
+  contains
+    final :: del2
+  end type bar
+contains
+  subroutine delete(this)
+    type(p_vec) :: this
+  end subroutine delete
+  subroutine del2(this)
+    type(bar) :: this
+  end subroutine del2
+end module