re PR fortran/48706 (Type extension inside subroutine)
authorJanus Weil <janus@gcc.gnu.org>
Fri, 20 May 2011 18:05:26 +0000 (20:05 +0200)
committerJanus Weil <janus@gcc.gnu.org>
Fri, 20 May 2011 18:05:26 +0000 (20:05 +0200)
2011-05-20  Janus Weil  <janus@gcc.gnu.org>

PR fortran/48706
* module.c (write_dt_extensions): Do not write extended types which
are local to a subroutine.

2011-05-20  Janus Weil  <janus@gcc.gnu.org>

PR fortran/48706
* gfortran.dg/extends_12.f03: New.

From-SVN: r173966

gcc/fortran/ChangeLog
gcc/fortran/module.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/extends_12.f03 [new file with mode: 0644]

index 610840130eaba4ab22c92a560497bc820228ebed..45ca79c6d865f0604ebbb4d4ab51cc053c4656d1 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-20  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/48706
+       * module.c (write_dt_extensions): Do not write extended types which
+       are local to a subroutine.
+
 2011-05-20  Joseph Myers  <joseph@codesourcery.com>
 
        * Make-lang.in (GFORTRAN_D_OBJS): Remove version.o and intl.o.
        copy for scalar coarrays.
        * trans-array.c (gfc_conv_array_ref): Ditto.
 
+2011-05-18  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/48700
+       * trans-intrinsic.c (gfc_conv_intrinsic_move_alloc): Deallocate 'TO'
+       argument to avoid memory leaks.
+
 2011-05-16  Tobias Burnus  <burnus@net-b.de>
 
        * gfortran.texi (_gfortran_set_options): Add GFC_STD_F2008_TR.
index fb8de0e39b6d74ee6f236769658a73d4664a0885..b6acca3a5f13b05b36db296b36b13467aa297914 100644 (file)
@@ -4817,6 +4817,9 @@ write_dt_extensions (gfc_symtree *st)
 {
   if (!gfc_check_symbol_access (st->n.sym))
     return;
+  if (!(st->n.sym->ns && st->n.sym->ns->proc_name
+       && st->n.sym->ns->proc_name->attr.flavor == FL_MODULE))
+    return;
 
   mio_lparen ();
   mio_pool_string (&st->n.sym->name);
index ba56b6d7745b538633430c0fe5a67d8ac5e2157e..a2ccc56f84075a2e34af5ea64012dc3022d0d8d4 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-20  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/48706
+       * gfortran.dg/extends_12.f03: New.
+
 2011-05-20  Jason Merrill  <jason@redhat.com>
 
        * g++.dg/template/koenig9.C: New.
 
        * gcc.c-torture/execute/960321-1.x: Remove.
 
+2011-05-18  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/48700
+       * gfortran.dg/move_alloc_4.f90: New.
+
 2011-05-18  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/49002
diff --git a/gcc/testsuite/gfortran.dg/extends_12.f03 b/gcc/testsuite/gfortran.dg/extends_12.f03
new file mode 100644 (file)
index 0000000..a93f6d0
--- /dev/null
@@ -0,0 +1,24 @@
+! { dg-do compile }
+!
+! PR 48706: Type extension inside subroutine
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+
+module mod_diff_01
+  implicit none
+  type :: foo
+  end type
+contains
+  subroutine create_ext
+    type, extends(foo) :: foo_e
+    end type
+  end subroutine
+end module
+
+program diff_01
+  use mod_diff_01
+  implicit none
+  call create_ext()
+end program
+
+! { dg-final { cleanup-modules "mod_diff_01" } }