aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2006-01-11 07:15:25 +0000
committerPaul Thomas <pault@gcc.gnu.org>2006-01-11 07:15:25 +0000
commitf851ee5c6917d79a2d5fceb12c58dccfbbd2b22d (patch)
tree97931527b32fa505e7f7554b2960b8d3be0bed80
parent0966949bb65fb158e3936e858468ddd3d1c95a68 (diff)
downloadgcc-f851ee5c6917d79a2d5fceb12c58dccfbbd2b22d.zip
gcc-f851ee5c6917d79a2d5fceb12c58dccfbbd2b22d.tar.gz
gcc-f851ee5c6917d79a2d5fceb12c58dccfbbd2b22d.tar.bz2
[multiple changes]
2005-01-11 Paul Thomas <pault@gcc.gnu.org> PR fortran/25730 * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for character lengths. 2006-01-11 Paul Thomas <pault@gcc.gnu.org> PR fortran/25730 * gfortran.dg/used_types_1.f90: New test. From-SVN: r109573
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-types.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/used_types_1.f9021
4 files changed, 37 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 44f6a48..1289429 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2005-01-11 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/25730
+ * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for
+ character lengths.
+
2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
fortran/24936
diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c
index b41940c..fcdef6a 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 b8d1bba..be973a0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-11 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/25730
+ * gfortran.dg/used_types_1.f90: New test.
+
2006-01-10 Hans-Peter Nilsson <hp@axis.com>
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 0000000..61356ab
--- /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 <andrea.bedini@gmail.com>
+!==============
+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