diff options
author | Richard Guenther <rguenther@suse.de> | 2007-07-12 09:30:27 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2007-07-12 09:30:27 +0000 |
commit | 553b66ad1d40ff948dfe1215e38787c1799110ff (patch) | |
tree | 29c5b917bfe31c769ff547e9990987839016560a | |
parent | 176be57beaed92f771fd7c86007363e17f65324e (diff) | |
download | gcc-553b66ad1d40ff948dfe1215e38787c1799110ff.zip gcc-553b66ad1d40ff948dfe1215e38787c1799110ff.tar.gz gcc-553b66ad1d40ff948dfe1215e38787c1799110ff.tar.bz2 |
trans-intrinsic.c (gfc_conv_intrinsic_repeat): Convert arguments to gfc_charlen_type_node.
2007-07-12 Richard Guenther <rguenther@suse.de>
* 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
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/trans-intrinsic.c | 7 | ||||
-rw-r--r-- | 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 <rguenther@suse.de> + + * 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 <franke.daniel@gmail.com> 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); } |