re PR fortran/29744 (Type renaming crashes gfortran with excessive memory usage)
2006-11-09 Paul Thomas <pault@gcc.gnu.org> PR fortran/29744 * trans-types.c (gfc_get_derived_type): Ensure that the proc_name namespace is not the same as the owner namespace and that identical derived types in the same namespace share the same backend_decl. 2006-11-09 Paul Thomas <pault@gcc.gnu.org> PR fortran/29744 * gfortran.dg/used_types_12.f90: New test. From-SVN: r118627
This commit is contained in:
parent
6acf0b3843
commit
ff883a9572
|
@ -1,3 +1,11 @@
|
||||||
|
2006-11-09 Paul Thomas <pault@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/29744
|
||||||
|
* trans-types.c (gfc_get_derived_type): Ensure that the
|
||||||
|
proc_name namespace is not the same as the owner namespace and
|
||||||
|
that identical derived types in the same namespace share the
|
||||||
|
same backend_decl.
|
||||||
|
|
||||||
2006-11-09 Paul Thomas <pault@gcc.gnu.org>
|
2006-11-09 Paul Thomas <pault@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/29699
|
PR fortran/29699
|
||||||
|
|
|
@ -1484,7 +1484,8 @@ gfc_get_derived_type (gfc_symbol * derived)
|
||||||
build the parent version and use it in the current namespace. */
|
build the parent version and use it in the current namespace. */
|
||||||
if (derived->ns->parent)
|
if (derived->ns->parent)
|
||||||
ns = derived->ns->parent;
|
ns = derived->ns->parent;
|
||||||
else if (derived->ns->proc_name)
|
else if (derived->ns->proc_name
|
||||||
|
&& derived->ns->proc_name->ns != derived->ns)
|
||||||
/* Derived types in an interface body obtain their parent reference
|
/* Derived types in an interface body obtain their parent reference
|
||||||
through the proc_name symbol. */
|
through the proc_name symbol. */
|
||||||
ns = derived->ns->proc_name->ns;
|
ns = derived->ns->proc_name->ns;
|
||||||
|
@ -1592,6 +1593,9 @@ other_equal_dts:
|
||||||
/* Add this backend_decl to all the other, equal derived types and
|
/* Add this backend_decl to all the other, equal derived types and
|
||||||
their components in this and sibling namespaces. */
|
their components in this and sibling namespaces. */
|
||||||
|
|
||||||
|
for (dt = derived->ns->derived_types; dt; dt = dt->next)
|
||||||
|
copy_dt_decls_ifequal (derived, dt->derived);
|
||||||
|
|
||||||
for (ns = derived->ns->sibling; ns; ns = ns->sibling)
|
for (ns = derived->ns->sibling; ns; ns = ns->sibling)
|
||||||
for (dt = ns->derived_types; dt; dt = dt->next)
|
for (dt = ns->derived_types; dt; dt = dt->next)
|
||||||
copy_dt_decls_ifequal (derived, dt->derived);
|
copy_dt_decls_ifequal (derived, dt->derived);
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2006-11-09 Paul Thomas <pault@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/29744
|
||||||
|
* gfortran.dg/used_types_12.f90: New test.
|
||||||
|
|
||||||
2006-11-09 Serge Belyshev <belyshev@depni.sinp.msu.ru>
|
2006-11-09 Serge Belyshev <belyshev@depni.sinp.msu.ru>
|
||||||
|
|
||||||
PR middle-end/29726
|
PR middle-end/29726
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
! { dg-do compile }
|
||||||
|
! Tests the fix PR29744, which is really a repeat of PR19362.
|
||||||
|
! The problem came about because the test for PR19362 shifted
|
||||||
|
! the fix to a subroutine, rather than the main program that
|
||||||
|
! it originally occurred in. Fixes for subsequent PRs introduced
|
||||||
|
! a difference between the main program and a contained procedure
|
||||||
|
! that resulted in the compiler going into an infinite loop.
|
||||||
|
!
|
||||||
|
! Contributed by Harald Anlauf <anlauf@gmx.de>
|
||||||
|
! and originally by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||||
|
!
|
||||||
|
MODULE M
|
||||||
|
TYPE T0
|
||||||
|
SEQUENCE
|
||||||
|
INTEGER I
|
||||||
|
END TYPE
|
||||||
|
END
|
||||||
|
|
||||||
|
PROGRAM MAIN
|
||||||
|
USE M, T1 => T0
|
||||||
|
TYPE T0
|
||||||
|
SEQUENCE
|
||||||
|
INTEGER I
|
||||||
|
END TYPE
|
||||||
|
TYPE(T0) :: BAR
|
||||||
|
TYPE(T1) :: BAZ
|
||||||
|
BAZ = BAR
|
||||||
|
END
|
||||||
|
! { dg-final { cleanup-modules "M" } }
|
||||||
|
|
Loading…
Reference in New Issue