trans-expr.c (gfc_trans_string_copy): Evaluate the string lengths
authorSteven G. Kargl <kargls@comcast.net>
Sat, 15 Jul 2006 05:11:38 +0000 (05:11 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 15 Jul 2006 05:11:38 +0000 (05:11 +0000)
2006-07-14  Steven G. Kargl  <kargls@comcast.net>

* trans-expr.c (gfc_trans_string_copy): Evaluate the string lengths

From-SVN: r115463

gcc/fortran/ChangeLog
gcc/fortran/trans-expr.c

index c9a95ce7a978dad5bbac1571f01c9cce0e962218..d21a2bf502c13734c6c7a41888bb78c4e13f644f 100644 (file)
@@ -1,3 +1,7 @@
+2006-07-14  Steven G. Kargl  <kargls@comcast.net>
+
+       * trans-expr.c (gfc_trans_string_copy): Evaluate the string lengths
+
 006-07-13  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/28174
index de003ec52234a66d13261fb6b1572004ea1cf8d0..d536dcde626655449620f90621f36b177d833d4f 100644 (file)
@@ -2228,10 +2228,10 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
 /* Generate code to copy a string.  */
 
 static void
-gfc_trans_string_copy (stmtblock_t * block, tree dlen, tree dest,
-                      tree slen, tree src)
+gfc_trans_string_copy (stmtblock_t * block, tree dlength, tree dest,
+                      tree slength, tree src)
 {
-  tree tmp;
+  tree tmp, dlen, slen;
   tree dsc;
   tree ssc;
   tree cond;
@@ -2241,6 +2241,9 @@ gfc_trans_string_copy (stmtblock_t * block, tree dlen, tree dest,
   tree tmp4;
   stmtblock_t tempblock;
 
+  dlen = fold_convert (size_type_node, gfc_evaluate_now (dlength, block));
+  slen = fold_convert (size_type_node, gfc_evaluate_now (slength, block));
+
   /* Deal with single character specially.  */
   dsc = gfc_to_single_character (dlen, dest);
   ssc = gfc_to_single_character (slen, src);