From 167f281ea66916a195bc4b7072714a305b0a123c Mon Sep 17 00:00:00 2001
From: Michael Matz <matz@suse.de>
Date: Thu, 20 Aug 2009 14:25:36 +0000
Subject: [PATCH] trans-expr.c (gfc_conv_string_tmp): Check type compatibility
 instead of equality.

fortran/
        * trans-expr.c (gfc_conv_string_tmp): Check type compatibility
        instead of equality.

testsuite/
        * gfortran.dg/pr41126.f90: New test.

From-SVN: r150964
---
 gcc/fortran/ChangeLog                 | 6 ++++++
 gcc/fortran/trans-expr.c              | 2 +-
 gcc/testsuite/ChangeLog               | 5 +++++
 gcc/testsuite/gfortran.dg/pr41126.f90 | 6 ++++++
 4 files changed, 18 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gfortran.dg/pr41126.f90

diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 9ba09896a008..3a8dd03c8f12 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-20  Michael Matz  <matz@suse.de>
+
+	PR fortran/41126
+	* trans-expr.c (gfc_conv_string_tmp): Check type compatibility
+	instead of equality.
+
 2009-08-20  Janus Weil  <janus@gcc.gnu.org>
 
 	PR fortran/41121
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 7672f0b092d1..c2c1f0fbed42 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -1104,7 +1104,7 @@ gfc_conv_string_tmp (gfc_se * se, tree type, tree len)
   tree var;
   tree tmp;
 
-  gcc_assert (TREE_TYPE (len) == gfc_charlen_type_node);
+  gcc_assert (types_compatible_p (TREE_TYPE (len), gfc_charlen_type_node));
 
   if (gfc_can_put_var_on_stack (len))
     {
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cf6d2e5ca1df..d5957e7c4d21 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-08-20  Michael Matz  <matz@suse.de>
+
+	PR fortran/41126
+	* gfortran.dg/pr41126.f90: New test.
+
 2009-08-20  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* gnat.dg/dynamic_bound.adb: New test.
diff --git a/gcc/testsuite/gfortran.dg/pr41126.f90 b/gcc/testsuite/gfortran.dg/pr41126.f90
new file mode 100644
index 000000000000..a43758eadaae
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr41126.f90
@@ -0,0 +1,6 @@
+! { dg-do compile }
+SUBROUTINE write_cputime( checkpoint  )
+  CHARACTER(LEN=*), INTENT(IN)             :: checkpoint
+  CHARACTER(LEN=LEN_TRIM(checkpoint)+7)    :: string1
+    string1 = ADJUSTL(string1)
+END SUBROUTINE write_cputime
-- 
GitLab