From: Richard Guenther Date: Sun, 31 Aug 2008 13:40:15 +0000 (+0000) Subject: trans-expr.c (gfc_trans_string_copy): Use the correct types to compute slen and dlen. X-Git-Tag: releases/gcc-4.4.0~2745 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=eb829078a3e73bfade686aad203390e5b8e9cc12;p=thirdparty%2Fgcc.git trans-expr.c (gfc_trans_string_copy): Use the correct types to compute slen and dlen. 2008-08-31 Richard Guenther * trans-expr.c (gfc_trans_string_copy): Use the correct types to compute slen and dlen. From-SVN: r139832 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 13ddef193dc6..36da100bf1bf 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2008-08-31 Richard Guenther + + * trans-expr.c (gfc_trans_string_copy): Use the correct types + to compute slen and dlen. + 2008-08-31 Daniel Kraft * gfortran.h (enum gfc_statement): New entry `ST_GENERIC'. diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 6c0897897aab..8ebda4945887 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);