Commit ee4b6b52 by Jakub Jelinek Committed by Jakub Jelinek

re PR fortran/55341 (address-sanitizer and Fortran)

	PR fortran/55341
	* trans-intrinsic.c (gfc_conv_intrinsic_transfer): Convert last
	argument to memcpy to size_type_node type.
	* trans-stmt.c (gfc_conv_elemental_dependencies): Likewise.
	* trasn-array.c (duplicate_allocatable): Likewise.

From-SVN: r193585
parent 741aacaf
2012-11-17 Jakub Jelinek <jakub@redhat.com>
PR fortran/55341
* trans-intrinsic.c (gfc_conv_intrinsic_transfer): Convert last
argument to memcpy to size_type_node type.
* trans-stmt.c (gfc_conv_elemental_dependencies): Likewise.
* trasn-array.c (duplicate_allocatable): Likewise.
2012-11-16 Janus Weil <janus@gcc.gnu.org>
PR fortran/55297
......
......@@ -7341,8 +7341,8 @@ duplicate_allocatable (tree dest, tree src, tree type, int rank,
}
tmp = builtin_decl_explicit (BUILT_IN_MEMCPY);
tmp = build_call_expr_loc (input_location, tmp, 3,
dest, src, size);
tmp = build_call_expr_loc (input_location, tmp, 3, dest, src,
fold_convert (size_type_node, size));
}
else
{
......@@ -7367,7 +7367,8 @@ duplicate_allocatable (tree dest, tree src, tree type, int rank,
tmp = builtin_decl_explicit (BUILT_IN_MEMCPY);
tmp = build_call_expr_loc (input_location,
tmp, 3, gfc_conv_descriptor_data_get (dest),
gfc_conv_descriptor_data_get (src), size);
gfc_conv_descriptor_data_get (src),
fold_convert (size_type_node, size));
}
gfc_add_expr_to_block (&block, tmp);
......
......@@ -5600,14 +5600,16 @@ gfc_conv_intrinsic_transfer (gfc_se * se, gfc_expr * expr)
tmp = fold_convert (pvoid_type_node, tmp);
/* Use memcpy to do the transfer. */
tmp = build_call_expr_loc (input_location,
builtin_decl_explicit (BUILT_IN_MEMCPY),
3,
tmp,
fold_convert (pvoid_type_node, source),
fold_build2_loc (input_location, MIN_EXPR,
gfc_array_index_type,
size_bytes, source_bytes));
tmp
= build_call_expr_loc (input_location,
builtin_decl_explicit (BUILT_IN_MEMCPY), 3, tmp,
fold_convert (pvoid_type_node, source),
fold_convert (size_type_node,
fold_build2_loc (input_location,
MIN_EXPR,
gfc_array_index_type,
size_bytes,
source_bytes)));
gfc_add_expr_to_block (&se->pre, tmp);
se->expr = info->descriptor;
......@@ -5649,7 +5651,7 @@ scalar_transfer:
builtin_decl_explicit (BUILT_IN_MEMCPY), 3,
fold_convert (pvoid_type_node, tmpdecl),
fold_convert (pvoid_type_node, ptr),
extent);
fold_convert (size_type_node, extent));
gfc_add_expr_to_block (&block, tmp);
indirect = gfc_finish_block (&block);
......@@ -5687,7 +5689,7 @@ scalar_transfer:
builtin_decl_explicit (BUILT_IN_MEMCPY), 3,
fold_convert (pvoid_type_node, tmp),
fold_convert (pvoid_type_node, ptr),
extent);
fold_convert (size_type_node, extent));
gfc_add_expr_to_block (&se->pre, tmp);
/* For CLASS results, set the _vptr. */
......
......@@ -337,7 +337,8 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse,
tmp = gfc_conv_descriptor_data_get (tmp);
tmp = build_call_expr_loc (input_location,
builtin_decl_explicit (BUILT_IN_MEMCPY),
3, tmp, data, size);
3, tmp, data,
fold_convert (size_type_node, size));
}
gfc_add_expr_to_block (&se->post, tmp);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment