diff --git a/example/std_example.rs b/example/std_example.rs index 67c1e376d7a..e34b35d5c4a 100644 --- a/example/std_example.rs +++ b/example/std_example.rs @@ -58,6 +58,7 @@ fn main() { assert_eq!(0b0000000000000000000000000010000000000000000000000000000000000000_0000000000000000000000000000000000001000000000000000000010000000u128.trailing_zeros(), 7); assert_eq!(core::intrinsics::saturating_sub(0, -170141183460469231731687303715884105728i128), 170141183460469231731687303715884105727i128); + std::hint::black_box(std::hint::black_box(7571400400375753350092698930310845914i128) * 10); assert!(0i128.checked_div(2i128).is_some()); assert!(0u128.checked_div(2u128).is_some()); assert_eq!(1u128 + 2, 3); diff --git a/src/codegen_i128.rs b/src/codegen_i128.rs index 6640f0f3587..cb048c0ad45 100644 --- a/src/codegen_i128.rs +++ b/src/codegen_i128.rs @@ -46,7 +46,7 @@ pub(crate) fn maybe_codegen<'tcx>( let lhs = lhs.load_scalar(fx); let rhs = rhs.load_scalar(fx); let oflow_ptr = oflow.to_ptr().get_addr(fx); - let res = fx.lib_call( + let res = fx.lib_call_unadjusted( "__muloti4", vec![ AbiParam::new(types::I128), diff --git a/src/compiler_builtins.rs b/src/compiler_builtins.rs index 8a53baa763a..f3b963200a0 100644 --- a/src/compiler_builtins.rs +++ b/src/compiler_builtins.rs @@ -39,6 +39,7 @@ builtin_functions! { // integers fn __multi3(a: i128, b: i128) -> i128; + fn __muloti4(n: i128, d: i128, oflow: &mut i32) -> i128; fn __udivti3(n: u128, d: u128) -> u128; fn __divti3(n: i128, d: i128) -> i128; fn __umodti3(n: u128, d: u128) -> u128;