diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-11-17 14:02:56 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-11-17 14:02:56 +0100 |
commit | ee4b6b5202eb87d4e154d09d5257943d3b555fac (patch) | |
tree | c39ad245ed82ae96d6e48e1bc3e5bd50fabcf94e /gcc/fortran/trans-intrinsic.c | |
parent | 741aacafff79e60410d224b72bae6364f2c3c40c (diff) | |
download | gcc-ee4b6b5202eb87d4e154d09d5257943d3b555fac.zip gcc-ee4b6b5202eb87d4e154d09d5257943d3b555fac.tar.gz gcc-ee4b6b5202eb87d4e154d09d5257943d3b555fac.tar.bz2 |
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
Diffstat (limited to 'gcc/fortran/trans-intrinsic.c')
-rw-r--r-- | gcc/fortran/trans-intrinsic.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index b101cb4..a31284e 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -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. */ |