diff options
Diffstat (limited to 'gcc/fortran/trans-expr.c')
| -rw-r--r-- | gcc/fortran/trans-expr.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index de003ec..d536dcd 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -2228,10 +2228,10 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, /* Generate code to copy a string. */ static void -gfc_trans_string_copy (stmtblock_t * block, tree dlen, tree dest, - tree slen, tree src) +gfc_trans_string_copy (stmtblock_t * block, tree dlength, tree dest, + tree slength, tree src) { - tree tmp; + tree tmp, dlen, slen; tree dsc; tree ssc; tree cond; @@ -2241,6 +2241,9 @@ gfc_trans_string_copy (stmtblock_t * block, tree dlen, tree dest, tree tmp4; stmtblock_t tempblock; + dlen = fold_convert (size_type_node, gfc_evaluate_now (dlength, block)); + slen = fold_convert (size_type_node, gfc_evaluate_now (slength, block)); + /* Deal with single character specially. */ dsc = gfc_to_single_character (dlen, dest); ssc = gfc_to_single_character (slen, src); |
