From f851ee5c6917d79a2d5fceb12c58dccfbbd2b22d Mon Sep 17 00:00:00 2001 From: Paul Thomas Date: Wed, 11 Jan 2006 07:15:25 +0000 Subject: [PATCH] [multiple changes] 2005-01-11 Paul Thomas PR fortran/25730 * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for character lengths. 2006-01-11 Paul Thomas PR fortran/25730 * gfortran.dg/used_types_1.f90: New test. From-SVN: r109573 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans-types.c | 6 +++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/used_types_1.f90 | 21 +++++++++++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/used_types_1.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 44f6a481aeb5..12894296a2e5 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2005-01-11 Paul Thomas + + PR fortran/25730 + * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for + character lengths. + 2006-01-09 Andrew Pinski fortran/24936 diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index b41940c1cdc8..fcdef6a0c0e7 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -1418,12 +1418,16 @@ copy_dt_decls_ifequal (gfc_symbol *from, gfc_symbol *to) 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. */ + been built. If it is a character, we need the character + length, as well. */ for (; to_cm; to_cm = to_cm->next, from_cm = from_cm->next) { to_cm->backend_decl = from_cm->backend_decl; if (from_cm->ts.type == BT_DERIVED) gfc_get_derived_type (to_cm->ts.derived); + + else if (from_cm->ts.type == BT_CHARACTER) + to_cm->ts.cl->backend_decl = from_cm->ts.cl->backend_decl; } return 1; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b8d1bba48c59..be973a022c44 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-01-11 Paul Thomas + + PR fortran/25730 + * gfortran.dg/used_types_1.f90: New test. + 2006-01-10 Hans-Peter Nilsson PR target/25718 diff --git a/gcc/testsuite/gfortran.dg/used_types_1.f90 b/gcc/testsuite/gfortran.dg/used_types_1.f90 new file mode 100644 index 000000000000..61356ab2c563 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/used_types_1.f90 @@ -0,0 +1,21 @@ +! { dg-do compile } +! This checks that the fix for PR25730, which was a regression +! caused by the fix for PR19362. +! +! Contributed by Andrea Bedini +!============== +MODULE testcase + TYPE orbit_elem + CHARACTER(4) :: coo + END TYPE orbit_elem +END MODULE +MODULE tp_trace + USE testcase + TYPE(orbit_elem) :: tp_store +CONTAINS + SUBROUTINE str_clan() + USE testcase + TYPE(orbit_elem) :: mtpcar + mtpcar%coo='a' !ICE was here + END SUBROUTINE str_clan +END MODULE -- 2.47.2