]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
trans-expr.c (gfc_trans_string_copy): Use the correct types to compute slen and dlen.
authorRichard Guenther <rguenther@suse.de>
Sun, 31 Aug 2008 13:40:15 +0000 (13:40 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Sun, 31 Aug 2008 13:40:15 +0000 (13:40 +0000)
2008-08-31  Richard Guenther  <rguenther@suse.de>

* trans-expr.c (gfc_trans_string_copy): Use the correct types
to compute slen and dlen.

From-SVN: r139832

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

index 13ddef193dc6d682c73778d3e9ae35c73056ec3e..36da100bf1bf4837ccff58b4509b5de555345a6b 100644 (file)
@@ -1,3 +1,8 @@
+2008-08-31  Richard Guenther  <rguenther@suse.de>
+
+       * trans-expr.c (gfc_trans_string_copy): Use the correct types
+       to compute slen and dlen.
+
 2008-08-31  Daniel Kraft  <d@domob.eu>
 
        * gfortran.h (enum gfc_statement): New entry `ST_GENERIC'.
index 6c0897897aabff87bec7ea801617848795aa86e4..8ebda49458873e706dd520646adcc829f248c307 100644 (file)
@@ -3066,10 +3066,12 @@ gfc_trans_string_copy (stmtblock_t * block, tree dlength, tree dest,
   /* For non-default character kinds, we have to multiply the string
      length by the base type size.  */
   chartype = gfc_get_char_type (dkind);
-  slen = fold_build2 (MULT_EXPR, size_type_node, slen,
-                     TYPE_SIZE_UNIT (chartype));
-  dlen = fold_build2 (MULT_EXPR, size_type_node, dlen,
-                     TYPE_SIZE_UNIT (chartype));
+  slen = fold_build2 (MULT_EXPR, size_type_node,
+                     fold_convert (size_type_node, slen),
+                     fold_convert (size_type_node, TYPE_SIZE_UNIT (chartype)));
+  dlen = fold_build2 (MULT_EXPR, size_type_node,
+                     fold_convert (size_type_node, dlen),
+                     fold_convert (size_type_node, TYPE_SIZE_UNIT (chartype)));
 
   if (dlength)
     dest = fold_convert (pvoid_type_node, dest);