re PR fortran/25532 (ICE in gfc_conv_component_ref, at fortran/trans-expr.c:269)

2005-12-29  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25532
	* trans-types.c (copy_dt_decls_ifequal): Copy declarations for
	components of derived type components by recursing into
	gfc_get_derived_type.

2005-12-29  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25532
	*gfortran.dg/host_used_types_1.f90: Check that host associated
	derived type components of derived types are properly declared
	in contained procedures.

From-SVN: r109138
This commit is contained in:
Paul Thomas 2005-12-29 06:11:21 +00:00
parent b69542f770
commit 486fd3c90c
4 changed files with 64 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2005-12-29 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25532
* trans-types.c (copy_dt_decls_ifequal): Copy declarations for
components of derived type components by recursing into
gfc_get_derived_type.
2005-12-28 Andrew Pinski <pinskia@physics.uc.edu>
PR fortran/25587

View File

@ -1414,8 +1414,17 @@ copy_dt_decls_ifequal (gfc_symbol *from, gfc_symbol *to)
to_cm = to->components;
from_cm = from->components;
/* Copy the component declarations. If a component is itself
a derived type, we need a copy of its component declarations.
This is done by recursing into gfc_get_derived_type and
ensures that the component's component declarations have
been built. */
for (; to_cm; to_cm = to_cm->next, from_cm = from_cm->next)
to_cm->backend_decl = from_cm->backend_decl;
{
to_cm->backend_decl = from_cm->backend_decl;
if (from_cm->ts.type == BT_DERIVED)
gfc_get_derived_type (to_cm->ts.derived);
}
return 1;
}

View File

@ -1,3 +1,10 @@
2005-12-29 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25532
*gfortran.dg/host_used_types_1.f90: New test. Check that host
associated derived type components of derived types are
properly declared in contained procedures.
2005-12-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/25139

View File

@ -0,0 +1,40 @@
! { dg-do compile }
! Tests the fix for PR25532, which was a regression introduced by
! the fix for PR20244.
!
! Contributed by Erik Edelmann <eedelman@gcc.gnu.org>
module ModelParams
implicit none
type ReionizationParams
real :: fraction
end type ReionizationParams
type CAMBparams
type(ReionizationParams) :: Reion
end type CAMBparams
type(CAMBparams) CP
end module ModelParams
module ThermoData
use ModelParams
implicit none
contains
subroutine inithermo()
use ModelParams
if (0 < CP%Reion%fraction) then
end if
end subroutine inithermo
! The bug expressed itself in this subroutine because the component type
! information was not being copied from the parent namespace.
subroutine SetTimeSteps
if (0 < CP%Reion%fraction) then
end if
end subroutine SetTimeSteps
end module ThermoData