diff --git a/src/intrinsics/mod.rs b/src/intrinsics/mod.rs index c74ed2d30611..a9954aff6d1d 100644 --- a/src/intrinsics/mod.rs +++ b/src/intrinsics/mod.rs @@ -812,7 +812,7 @@ pub(crate) fn codegen_intrinsic_call<'tcx>( let pointee_size: u64 = fx.layout_of(T).size.bytes(); let diff = fx.bcx.ins().isub(ptr, base); // FIXME this can be an exact division. - let val = CValue::by_val(fx.bcx.ins().udiv_imm(diff, pointee_size as i64), isize_layout); + let val = CValue::by_val(fx.bcx.ins().sdiv_imm(diff, pointee_size as i64), isize_layout); ret.write_cvalue(fx, val); };