aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-expr.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2008-08-31 13:40:15 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2008-08-31 13:40:15 +0000
commiteb829078a3e73bfade686aad203390e5b8e9cc12 (patch)
treec0062722621b765a91aa341427c24d9f8bf025e8 /gcc/fortran/trans-expr.c
parent2b2587f577ebc08d489132307517f5bb9fb35346 (diff)
downloadgcc-eb829078a3e73bfade686aad203390e5b8e9cc12.zip
gcc-eb829078a3e73bfade686aad203390e5b8e9cc12.tar.gz
gcc-eb829078a3e73bfade686aad203390e5b8e9cc12.tar.bz2
trans-expr.c (gfc_trans_string_copy): Use the correct types to compute slen and dlen.
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
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r--gcc/fortran/trans-expr.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 6c08978..8ebda49 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -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);