@@ -935,20 +935,15 @@ fn trans_stack_local_derived_tydesc(cx: @block_ctxt, llsz: ValueRef,
935
935
// Store a pointer to the rest of the descriptors.
936
936
let ccx = bcx_ccx ( cx) ;
937
937
store_inbounds ( cx, llfirstparam, llmyroottydesc,
938
- [ C_int ( ccx, 0 ) ,
939
- C_int ( ccx, abi:: tydesc_field_first_param) ] ) ;
938
+ [ 0 , abi:: tydesc_field_first_param] ) ;
940
939
store_inbounds ( cx, C_uint ( ccx, n_params) , llmyroottydesc,
941
- [ C_int ( ccx, 0 ) ,
942
- C_int ( ccx, abi:: tydesc_field_n_params) ] ) ;
940
+ [ 0 , abi:: tydesc_field_n_params] ) ;
943
941
store_inbounds ( cx, llsz, llmyroottydesc,
944
- [ C_int ( ccx, 0 ) ,
945
- C_int ( ccx, abi:: tydesc_field_size) ] ) ;
942
+ [ 0 , abi:: tydesc_field_size] ) ;
946
943
store_inbounds ( cx, llalign, llmyroottydesc,
947
- [ C_int ( ccx, 0 ) ,
948
- C_int ( ccx, abi:: tydesc_field_align) ] ) ;
944
+ [ 0 , abi:: tydesc_field_align] ) ;
949
945
store_inbounds ( cx, C_uint ( ccx, obj_params) , llmyroottydesc,
950
- [ C_int ( ccx, 0 ) ,
951
- C_int ( ccx, abi:: tydesc_field_obj_params) ] ) ;
946
+ [ 0 , abi:: tydesc_field_obj_params] ) ;
952
947
ret llmyroottydesc;
953
948
}
954
949
@@ -1618,8 +1613,8 @@ fn load_inbounds(cx: @block_ctxt, p: ValueRef, idxs: [ValueRef]) -> ValueRef {
1618
1613
}
1619
1614
1620
1615
fn store_inbounds ( cx : @block_ctxt , v : ValueRef , p : ValueRef ,
1621
- idxs : [ ValueRef ] ) {
1622
- Store ( cx, v, InBoundsGEP ( cx, p, idxs) ) ;
1616
+ idxs : [ int ] ) {
1617
+ Store ( cx, v, GEPi ( cx, p, idxs) ) ;
1623
1618
}
1624
1619
1625
1620
// Iterates through the elements of a structural type.
@@ -1975,16 +1970,20 @@ fn call_memmove(cx: @block_ctxt, dst: ValueRef, src: ValueRef,
1975
1970
// LLVM complains -- not even a constant element of a tydesc works).
1976
1971
1977
1972
let ccx = bcx_ccx ( cx) ;
1973
+ let key = alt ccx. sess . get_targ_cfg ( ) . arch {
1974
+ session:: arch_x86. | session:: arch_arm. { "llvm.memmove.p0i8.p0i8.i32" }
1975
+ session:: arch_x86_64. { "llvm.memmove.p0i8.p0i8.i64" }
1976
+ } ;
1978
1977
let i = ccx. intrinsics ;
1979
- assert ( i. contains_key ( "llvm.memmove.p0i8.p0i8.i32" ) ) ;
1980
- let memmove = i. get ( "llvm.memmove.p0i8.p0i8.i32" ) ;
1978
+ assert ( i. contains_key ( key ) ) ;
1979
+ let memmove = i. get ( key ) ;
1981
1980
let src_ptr = PointerCast ( cx, src, T_ptr ( T_i8 ( ) ) ) ;
1982
1981
let dst_ptr = PointerCast ( cx, dst, T_ptr ( T_i8 ( ) ) ) ;
1983
- let size = IntCast ( cx, n_bytes, T_i32 ( ) ) ;
1984
- let align = C_int ( ccx , 1 ) ;
1982
+ let size = IntCast ( cx, n_bytes, ccx . int_type ) ;
1983
+ let align = C_i32 ( 1i32 ) ;
1985
1984
let volatile = C_bool ( false ) ;
1986
- ret rslt ( cx,
1987
- Call ( cx, memmove , [ dst_ptr , src_ptr , size , align , volatile ] ) ) ;
1985
+ let ret_val = Call ( cx, memmove , [ dst_ptr , src_ptr , size , align , volatile ] ) ;
1986
+ ret rslt ( cx, ret_val ) ;
1988
1987
}
1989
1988
1990
1989
fn call_bzero ( cx : @block_ctxt , dst : ValueRef , n_bytes : ValueRef ,
@@ -3872,8 +3871,7 @@ fn trans_c_stack_native_call(bcx: @block_ctxt, f: @ast::expr,
3872
3871
let i = 0 u, n = vec:: len ( llargs) ;
3873
3872
while i < n {
3874
3873
let llarg = llargs[ i] . llval ;
3875
- store_inbounds ( bcx, llarg, llargbundle, [ C_int ( ccx, 0 ) ,
3876
- C_uint ( ccx, i) ] ) ;
3874
+ store_inbounds ( bcx, llarg, llargbundle, [ 0 , i as int ] ) ;
3877
3875
i += 1 u;
3878
3876
}
3879
3877
@@ -4408,8 +4406,10 @@ fn trans_log(lvl: int, cx: @block_ctxt, e: @ast::expr) -> @block_ctxt {
4408
4406
let llvalptr = r. val ;
4409
4407
let llval_i8 = PointerCast ( log_bcx, llvalptr, T_ptr ( T_i8 ( ) ) ) ;
4410
4408
4409
+ // FIXME lvl should not be int, but actually u32,
4410
+ // and the upcall should take a u32, not an i32
4411
4411
Call ( log_bcx, ccx. upcalls . log_type ,
4412
- [ lltydesc, llval_i8, C_int ( ccx , lvl) ] ) ;
4412
+ [ lltydesc, llval_i8, C_i32 ( lvl as i32 ) ] ) ;
4413
4413
4414
4414
log_bcx = trans_block_cleanups ( log_bcx, log_cx) ;
4415
4415
Br ( log_bcx, after_cx. llbb ) ;
@@ -5206,7 +5206,7 @@ fn trans_res_ctor(cx: @local_ctxt, sp: span, dtor: ast::_fn,
5206
5206
check type_is_tup_like ( bcx, tup_t) ;
5207
5207
let flag = GEP_tup_like ( bcx, tup_t, llretptr, [ 0 , 0 ] ) ;
5208
5208
bcx = flag. bcx ;
5209
- Store ( bcx, C_int ( ccx , 1 ) , flag. val ) ;
5209
+ Store ( bcx, C_i32 ( 1 ) , flag. val ) ;
5210
5210
build_return ( bcx) ;
5211
5211
finish_fn ( fcx, lltop) ;
5212
5212
}
0 commit comments