diff --git a/build.rs b/build.rs index ac75e6e..5d48ec6 100644 --- a/build.rs +++ b/build.rs @@ -189,6 +189,7 @@ use core::mem; target_os = "linux", test)))] use std::mem; + use compiler_builtins::float::add::__adddf3; fn mk_f64(x: u64) -> f64 { @@ -828,11 +829,22 @@ fn divsi3() { } fn prologue() -> &'static str { - " + r#" +#[cfg(all(target_arch = "arm", + not(any(target_env = "gnu", target_env = "musl")), + target_os = "linux", + test))] +use core::mem; +#[cfg(not(all(target_arch = "arm", + not(any(target_env = "gnu", target_env = "musl")), + target_os = "linux", + test)))] +use std::mem; + use compiler_builtins::int::sdiv::__divti3; static TEST_CASES: &[((i128, i128), i128)] = &[ -" +"# } fn epilogue() -> &'static str { @@ -842,7 +854,7 @@ static TEST_CASES: &[((i128, i128), i128)] = &[ #[test] fn divti3() { for &((a, b), c) in TEST_CASES { - let c_ = __divti3(a, b); + let c_: i128 = unsafe { mem::transmute(__divti3(a, b)) }; assert_eq!(((a, b), c), ((a, b), c_)); } } @@ -1895,11 +1907,22 @@ fn modsi3() { } fn prologue() -> &'static str { - " + r#" +#[cfg(all(target_arch = "arm", + not(any(target_env = "gnu", target_env = "musl")), + target_os = "linux", + test))] +use core::mem; +#[cfg(not(all(target_arch = "arm", + not(any(target_env = "gnu", target_env = "musl")), + target_os = "linux", + test)))] +use std::mem; + use compiler_builtins::int::sdiv::__modti3; static TEST_CASES: &[((i128, i128), i128)] = &[ -" +"# } fn epilogue() -> &'static str { @@ -1909,7 +1932,7 @@ static TEST_CASES: &[((i128, i128), i128)] = &[ #[test] fn modti3() { for &((a, b), c) in TEST_CASES { - let c_ = __modti3(a, b); + let c_: i128 = unsafe { mem::transmute(__modti3(a, b)) }; assert_eq!(((a, b), c), ((a, b), c_)); } } @@ -2913,11 +2936,22 @@ fn udivmodsi4() { } fn prologue() -> &'static str { - " + r#" +#[cfg(all(target_arch = "arm", + not(any(target_env = "gnu", target_env = "musl")), + target_os = "linux", + test))] +use core::mem; +#[cfg(not(all(target_arch = "arm", + not(any(target_env = "gnu", target_env = "musl")), + target_os = "linux", + test)))] +use std::mem; + use compiler_builtins::int::udiv::__udivmodti4; static TEST_CASES: &[((u128, u128), (u128, u128))] = &[ -" +"# } fn epilogue() -> &'static str { @@ -2928,7 +2962,7 @@ static TEST_CASES: &[((u128, u128), (u128, u128))] = &[ fn udivmodti4() { for &((a, b), (c, rem)) in TEST_CASES { let mut rem_ = 0; - let c_ = __udivmodti4(a, b, Some(&mut rem_)); + let c_: u128 = unsafe { mem::transmute(__udivmodti4(a, b, Some(&mut rem_))) }; assert_eq!(((a, b), (c, rem)), ((a, b), (c_, rem_))); } } @@ -3036,11 +3070,22 @@ fn udivsi3() { } fn prologue() -> &'static str { - " + r#" +#[cfg(all(target_arch = "arm", + not(any(target_env = "gnu", target_env = "musl")), + target_os = "linux", + test))] +use core::mem; +#[cfg(not(all(target_arch = "arm", + not(any(target_env = "gnu", target_env = "musl")), + target_os = "linux", + test)))] +use std::mem; + use compiler_builtins::int::udiv::__udivti3; static TEST_CASES: &[((u128, u128), u128)] = &[ -" +"# } fn epilogue() -> &'static str { @@ -3050,7 +3095,7 @@ static TEST_CASES: &[((u128, u128), u128)] = &[ #[test] fn udivti3() { for &((a, b), c) in TEST_CASES { - let c_ = __udivti3(a, b); + let c_: u128 = unsafe { mem::transmute(__udivti3(a, b)) }; assert_eq!(((a, b), c), ((a, b), c_)); } } @@ -3219,11 +3264,22 @@ fn umodsi3() { } fn prologue() -> &'static str { - " + r#" +#[cfg(all(target_arch = "arm", + not(any(target_env = "gnu", target_env = "musl")), + target_os = "linux", + test))] +use core::mem; +#[cfg(not(all(target_arch = "arm", + not(any(target_env = "gnu", target_env = "musl")), + target_os = "linux", + test)))] +use std::mem; + use compiler_builtins::int::udiv::__umodti3; static TEST_CASES: &[((u128, u128), u128)] = &[ -" +"# } fn epilogue() -> &'static str { @@ -3233,7 +3289,7 @@ static TEST_CASES: &[((u128, u128), u128)] = &[ #[test] fn umodti3() { for &((a, b), c) in TEST_CASES { - let c_ = __umodti3(a, b); + let c_: u128 = unsafe { mem::transmute(__umodti3(a, b)) }; assert_eq!(((a, b), c), ((a, b), c_)); } }