PR fortran/55341
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 17 Nov 2012 13:02:56 +0000 (13:02 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 17 Nov 2012 13:02:56 +0000 (13:02 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193585 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-array.c
gcc/fortran/trans-intrinsic.c
gcc/fortran/trans-stmt.c

index 439eae5..bb3e708 100644 (file)
@@ -1,3 +1,11 @@
+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
index 26f0523..fc628ca 100644 (file)
@@ -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);
index b101cb4..a31284e 100644 (file)
@@ -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.  */
index b95c8da..de22ce0 100644 (file)
@@ -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);