aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2011-05-20 20:05:26 +0200
committerJanus Weil <janus@gcc.gnu.org>2011-05-20 20:05:26 +0200
commit54381af7343506f3be32c51921faae1045fc5574 (patch)
treedb4f9bd4f2eab6673b597bf99d85f53e1a45dbf4 /gcc
parent94df301fa033641561145d44ed48cf4c85d43a2c (diff)
downloadgcc-54381af7343506f3be32c51921faae1045fc5574.zip
gcc-54381af7343506f3be32c51921faae1045fc5574.tar.gz
gcc-54381af7343506f3be32c51921faae1045fc5574.tar.bz2
re PR fortran/48706 (Type extension inside subroutine)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog12
-rw-r--r--gcc/fortran/module.c3
-rw-r--r--gcc/testsuite/ChangeLog10
-rw-r--r--gcc/testsuite/gfortran.dg/extends_12.f0324
4 files changed, 49 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 6108401..45ca79c 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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.
@@ -20,6 +26,12 @@
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.
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index fb8de0e..b6acca3 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -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);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ba56b6d..a2ccc56 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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.
@@ -53,6 +58,11 @@
* 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
index 0000000..a93f6d0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/extends_12.f03
@@ -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" } }