re PR fortran/29820 (ICE in fold_convert, at fold-const.c:2146)

2006-11-21 Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29820
	* trans-array.c (gfc_get_derived_type): Once done, spread the
	backend_decl to all identical derived types in all sibling
	namespaces.

2006-11-21 Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29820
	* gfortran.dg/used_types_13.f90: New test.

From-SVN: r119073
This commit is contained in:
Paul Thomas 2006-11-21 23:42:17 +00:00
parent 887af464cd
commit da2a24c3f6
4 changed files with 42 additions and 5 deletions

View file

@ -1,3 +1,10 @@
2006-11-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29820
* trans-array.c (gfc_get_derived_type): Once done, spread the
backend_decl to all identical derived types in all sibling
namespaces.
2006-11-20 Tobias Burnus <burnus@net-b.de>
PR fortran/27546

View file

@ -1608,11 +1608,8 @@ gfc_get_derived_type (gfc_symbol * derived)
other_equal_dts:
/* Add this backend_decl to all the other, equal derived types and
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)
ns = derived->ns->parent ? derived->ns->parent->contained : derived->ns;
for (; ns; ns = ns->sibling)
for (dt = ns->derived_types; dt; dt = dt->next)
copy_dt_decls_ifequal (derived, dt->derived);

View file

@ -1,3 +1,8 @@
2006-11-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29820
* gfortran.dg/used_types_13.f90: New test.
2006-11-21 Janis Johnson <janis187@us.ibm.com>
* gcc.dg/dfp/snan.c: Delete.

View file

@ -0,0 +1,28 @@
! { dg-do compile }
! Tests the fix for PR29820, which was another problem with derived type
! association. Not all siblings were being searched for identical types.
!
! Contributed by Harald Anlauf <anlauf@gmx.de>
!
module geo
type geodetic
real :: h
end type geodetic
end module geo
module gfcbug44
implicit none
contains
subroutine point ( gp)
use geo
type(geodetic), intent(out) :: gp
type(geodetic) :: gpx(1)
gp = gpx(1)
end subroutine point
subroutine plane ()
use geo
type(geodetic) :: gp
call point ( gp)
end subroutine plane
end module gfcbug44
! { dg-final { cleanup-modules "geo gfcbug44" } }