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:
parent
887af464cd
commit
da2a24c3f6
4 changed files with 42 additions and 5 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
28
gcc/testsuite/gfortran.dg/used_types_13.f90
Normal file
28
gcc/testsuite/gfortran.dg/used_types_13.f90
Normal 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" } }
|
||||
|
Loading…
Add table
Reference in a new issue