@@ -2902,15 +2902,15 @@ fn drop_ty(@block_ctxt cx,
2902
2902
ret res( cx, C_nil ( ) ) ;
2903
2903
}
2904
2904
2905
- fn call_memcpy ( @block_ctxt cx,
2905
+ fn call_memmove ( @block_ctxt cx,
2906
2906
ValueRef dst,
2907
2907
ValueRef src,
2908
2908
ValueRef n_bytes,
2909
2909
ValueRef align_bytes) -> result {
2910
2910
// FIXME: switch to the 64-bit variant when on such a platform.
2911
2911
auto i = cx. fcx. lcx. ccx. intrinsics;
2912
- assert ( i. contains_key( "llvm. memcpy . p0i8. p0i8. i32 ") ) ;
2913
- auto memcpy = i. get( "llvm. memcpy . p0i8. p0i8. i32 ") ;
2912
+ assert ( i. contains_key( "llvm. memmove . p0i8. p0i8. i32 ") ) ;
2913
+ auto memmove = i. get( "llvm. memmove . p0i8. p0i8. i32 ") ;
2914
2914
auto src_ptr = cx. build. PointerCast ( src, T_ptr ( T_i8 ( ) ) ) ;
2915
2915
auto dst_ptr = cx. build. PointerCast ( dst, T_ptr ( T_i8 ( ) ) ) ;
2916
2916
auto size = cx. build. IntCast ( n_bytes, T_i32 ( ) ) ;
@@ -2921,7 +2921,7 @@ fn call_memcpy(@block_ctxt cx,
2921
2921
{ cx. build. IntCast ( C_int ( 0 ) , T_i32 ( ) ) } ;
2922
2922
2923
2923
auto volatile = C_bool ( false) ;
2924
- ret res( cx, cx. build. Call ( memcpy ,
2924
+ ret res( cx, cx. build. Call ( memmove ,
2925
2925
vec( dst_ptr, src_ptr,
2926
2926
size, align, volatile) ) ) ;
2927
2927
}
@@ -2949,14 +2949,14 @@ fn call_bzero(@block_ctxt cx,
2949
2949
size, align, volatile) ) ) ;
2950
2950
}
2951
2951
2952
- fn memcpy_ty ( @block_ctxt cx,
2952
+ fn memmove_ty ( @block_ctxt cx,
2953
2953
ValueRef dst,
2954
2954
ValueRef src,
2955
2955
ty. t t) -> result {
2956
2956
if ( ty. type_has_dynamic_size( cx. fcx. lcx. ccx. tcx, t) ) {
2957
2957
auto llsz = size_of( cx, t) ;
2958
2958
auto llalign = align_of( llsz. bcx, t) ;
2959
- ret call_memcpy ( llalign. bcx, dst, src, llsz. val, llalign. val) ;
2959
+ ret call_memmove ( llalign. bcx, dst, src, llsz. val, llalign. val) ;
2960
2960
2961
2961
} else {
2962
2962
ret res( cx, cx. build. Store ( cx. build. Load ( src) , dst) ) ;
@@ -2993,7 +2993,7 @@ fn copy_ty(@block_ctxt cx,
2993
2993
if ( action == DROP_EXISTING ) {
2994
2994
r = drop_ty( r. bcx, dst, t) ;
2995
2995
}
2996
- ret memcpy_ty ( r. bcx, dst, src, t) ;
2996
+ ret memmove_ty ( r. bcx, dst, src, t) ;
2997
2997
}
2998
2998
2999
2999
cx. fcx. lcx. ccx. sess. bug( "unexpected type in trans. copy_ty: " +
@@ -7299,9 +7299,9 @@ fn trans_main_fn(@local_ctxt cx, ValueRef llcrate, ValueRef crate_map) {
7299
7299
7300
7300
fn declare_intrinsics ( ModuleRef llmod) -> hashmap [ str, ValueRef ] {
7301
7301
7302
- let vec[ TypeRef ] T_memcpy32_args = vec ( T_ptr ( T_i8 ( ) ) , T_ptr ( T_i8 ( ) ) ,
7302
+ let vec[ TypeRef ] T_memmove32_args = vec ( T_ptr ( T_i8 ( ) ) , T_ptr ( T_i8 ( ) ) ,
7303
7303
T_i32 ( ) , T_i32 ( ) , T_i1 ( ) ) ;
7304
- let vec[ TypeRef ] T_memcpy64_args = vec ( T_ptr ( T_i8 ( ) ) , T_ptr ( T_i8 ( ) ) ,
7304
+ let vec[ TypeRef ] T_memmove64_args = vec ( T_ptr ( T_i8 ( ) ) , T_ptr ( T_i8 ( ) ) ,
7305
7305
T_i64 ( ) , T_i32 ( ) , T_i1 ( ) ) ;
7306
7306
7307
7307
let vec[ TypeRef ] T_memset32_args = vec ( T_ptr ( T_i8 ( ) ) , T_i8 ( ) ,
@@ -7311,10 +7311,10 @@ fn declare_intrinsics(ModuleRef llmod) -> hashmap[str,ValueRef] {
7311
7311
7312
7312
let vec[ TypeRef ] T_trap_args = vec ( ) ;
7313
7313
7314
- auto memcpy32 = decl_cdecl_fn ( llmod, "llvm.memcpy .p0i8.p0i8.i32" ,
7315
- T_fn ( T_memcpy32_args , T_void ( ) ) ) ;
7316
- auto memcpy64 = decl_cdecl_fn ( llmod, "llvm.memcpy .p0i8.p0i8.i64" ,
7317
- T_fn ( T_memcpy64_args , T_void ( ) ) ) ;
7314
+ auto memmove32 = decl_cdecl_fn ( llmod, "llvm.memmove .p0i8.p0i8.i32" ,
7315
+ T_fn ( T_memmove32_args , T_void ( ) ) ) ;
7316
+ auto memmove64 = decl_cdecl_fn ( llmod, "llvm.memmove .p0i8.p0i8.i64" ,
7317
+ T_fn ( T_memmove64_args , T_void ( ) ) ) ;
7318
7318
7319
7319
auto memset32 = decl_cdecl_fn ( llmod, "llvm.memset.p0i8.i32" ,
7320
7320
T_fn ( T_memset32_args , T_void ( ) ) ) ;
@@ -7325,8 +7325,8 @@ fn declare_intrinsics(ModuleRef llmod) -> hashmap[str,ValueRef] {
7325
7325
T_fn ( T_trap_args , T_void ( ) ) ) ;
7326
7326
7327
7327
auto intrinsics = new_str_hash[ ValueRef ] ( ) ;
7328
- intrinsics. insert ( "llvm.memcpy .p0i8.p0i8.i32" , memcpy32 ) ;
7329
- intrinsics. insert ( "llvm.memcpy .p0i8.p0i8.i64" , memcpy64 ) ;
7328
+ intrinsics. insert ( "llvm.memmove .p0i8.p0i8.i32" , memmove32 ) ;
7329
+ intrinsics. insert ( "llvm.memmove .p0i8.p0i8.i64" , memmove64 ) ;
7330
7330
intrinsics. insert ( "llvm.memset.p0i8.i32" , memset32) ;
7331
7331
intrinsics. insert ( "llvm.memset.p0i8.i64" , memset64) ;
7332
7332
intrinsics. insert ( "llvm.trap" , trap) ;
@@ -7527,7 +7527,7 @@ fn trans_vec_append_glue(@local_ctxt cx) {
7527
7527
elt_llsz, bind take_one ( elt_tydesc,
7528
7528
_, _, _) ) . bcx ;
7529
7529
7530
- ret call_memcpy ( bcx, dst, src, n_bytes, elt_llalign) ;
7530
+ ret call_memmove ( bcx, dst, src, n_bytes, elt_llalign) ;
7531
7531
}
7532
7532
7533
7533
// Copy any dst elements in, omitting null if doing str.
@@ -7597,8 +7597,7 @@ fn make_glues(ModuleRef llmod, type_names tn) -> @glue_fns {
7597
7597
7598
7598
fn make_common_glue ( session . session sess, str output ) {
7599
7599
// FIXME: part of this is repetitive and is probably a good idea
7600
- // to autogen it, but things like the memcpy implementation are not
7601
- // and it might be better to just check in a .ll file.
7600
+ // to autogen it.
7602
7601
auto llmod =
7603
7602
llvm. LLVMModuleCreateWithNameInContext ( Str . buf ( "rust_out" ) ,
7604
7603
llvm. LLVMGetGlobalContext ( ) ) ;
0 commit comments