From 553b66ad1d40ff948dfe1215e38787c1799110ff Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Thu, 12 Jul 2007 09:30:27 +0000 Subject: [PATCH] trans-intrinsic.c (gfc_conv_intrinsic_repeat): Convert arguments to gfc_charlen_type_node. 2007-07-12 Richard Guenther * trans-intrinsic.c (gfc_conv_intrinsic_repeat): Convert arguments to gfc_charlen_type_node. * trans-io.c (gfc_convert_array_to_string): Convert type size to gfc_array_index_type. From-SVN: r126575 --- gcc/fortran/ChangeLog | 7 +++++++ gcc/fortran/trans-intrinsic.c | 7 +++++-- gcc/fortran/trans-io.c | 3 ++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 786abca..20bf60b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2007-07-12 Richard Guenther + + * trans-intrinsic.c (gfc_conv_intrinsic_repeat): Convert + arguments to gfc_charlen_type_node. + * trans-io.c (gfc_convert_array_to_string): Convert type + size to gfc_array_index_type. + 2007-07-12 Daniel Franke PR fortran/32634 diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index c4354b1..d6209c3 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -3570,7 +3570,9 @@ gfc_conv_intrinsic_repeat (gfc_se * se, gfc_expr * expr) &se->pre, &expr->where); /* Compute the destination length. */ - dlen = fold_build2 (MULT_EXPR, gfc_charlen_type_node, slen, ncopies); + dlen = fold_build2 (MULT_EXPR, gfc_charlen_type_node, + fold_convert (gfc_charlen_type_node, slen), + fold_convert (gfc_charlen_type_node, ncopies)); type = gfc_get_character_type (expr->ts.kind, expr->ts.cl); dest = gfc_conv_string_tmp (se, build_pointer_type (type), dlen); @@ -3594,7 +3596,8 @@ gfc_conv_intrinsic_repeat (gfc_se * se, gfc_expr * expr) gfc_add_expr_to_block (&body, tmp); /* Call memmove (dest + (i*slen), src, slen). */ - tmp = fold_build2 (MULT_EXPR, gfc_charlen_type_node, slen, + tmp = fold_build2 (MULT_EXPR, gfc_charlen_type_node, + fold_convert (gfc_charlen_type_node, slen), fold_convert (gfc_charlen_type_node, count)); tmp = fold_build2 (POINTER_PLUS_EXPR, pchar_type_node, fold_convert (pchar_type_node, dest), diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index 00d0ebd..4d7695e 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -623,7 +623,8 @@ gfc_convert_array_to_string (gfc_se * se, gfc_expr * e) } tmp = TYPE_SIZE_UNIT (gfc_get_element_type (type)); - size = fold_build2 (MULT_EXPR, gfc_array_index_type, size, tmp); + size = fold_build2 (MULT_EXPR, gfc_array_index_type, size, + fold_convert (gfc_array_index_type, tmp)); se->string_length = fold_convert (gfc_charlen_type_node, size); } -- 2.7.4