From eb829078a3e73bfade686aad203390e5b8e9cc12 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Sun, 31 Aug 2008 13:40:15 +0000 Subject: [PATCH] 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 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/trans-expr.c | 10 ++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 13ddef1..36da100 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 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); -- 2.7.4