diff options
author | Richard Guenther <rguenther@suse.de> | 2008-08-31 13:40:15 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-08-31 13:40:15 +0000 |
commit | eb829078a3e73bfade686aad203390e5b8e9cc12 (patch) | |
tree | c0062722621b765a91aa341427c24d9f8bf025e8 /gcc/fortran/trans-expr.c | |
parent | 2b2587f577ebc08d489132307517f5bb9fb35346 (diff) | |
download | gcc-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.c | 10 |
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); |