From 7203831012409813a78ad87c4f9ddfb85699ac56 Mon Sep 17 00:00:00 2001 From: kargl Date: Sat, 15 Jul 2006 05:11:38 +0000 Subject: [PATCH] 2006-07-14 Steven G. Kargl * trans-expr.c (gfc_trans_string_copy): Evaluate the string lengths git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115463 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 4 ++++ gcc/fortran/trans-expr.c | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c9a95ce7a97..d21a2bf502c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,7 @@ +2006-07-14 Steven G. Kargl + + * trans-expr.c (gfc_trans_string_copy): Evaluate the string lengths + 006-07-13 Paul Thomas PR fortran/28174 diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index de003ec5223..d536dcde626 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); -- 2.11.0