mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-04 04:08:19 +00:00
parent
df3b7cb1b4
commit
657346a057
2 changed files with 16 additions and 2 deletions
|
@ -7921,11 +7921,10 @@ fn int_abs_with_overflow<'a, 'ctx, 'env>(
|
|||
// (xor arg shifted) - shifted
|
||||
|
||||
let bd = env.builder;
|
||||
let ctx = env.context;
|
||||
let shifted_name = "abs_shift_right";
|
||||
let shifted_alloca = {
|
||||
let bits_to_shift = int_type.get_bit_width() as u64 - 1;
|
||||
let shift_val = ctx.i64_type().const_int(bits_to_shift, false);
|
||||
let shift_val = int_type.const_int(bits_to_shift, false);
|
||||
let shifted = bd.build_right_shift(arg, shift_val, true, shifted_name);
|
||||
let alloca = bd.build_alloca(int_type, "#int_abs_help");
|
||||
|
||||
|
|
|
@ -614,6 +614,21 @@ fn i64_abs() {
|
|||
assert_evals_to!("Num.abs (Num.minI64 + 1)", -(i64::MIN + 1), i64);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||
fn various_sized_abs() {
|
||||
assert_evals_to!("Num.abs -6i8", 6, i8);
|
||||
assert_evals_to!("Num.abs -6i16", 6, i16);
|
||||
assert_evals_to!("Num.abs -6i32", 6, i32);
|
||||
assert_evals_to!("Num.abs -6i64", 6, i64);
|
||||
assert_evals_to!("Num.abs -6i128", 6, i128);
|
||||
assert_evals_to!("Num.abs 6u8", 6, u8);
|
||||
assert_evals_to!("Num.abs 6u16", 6, u16);
|
||||
assert_evals_to!("Num.abs 6u32", 6, u32);
|
||||
assert_evals_to!("Num.abs 6u64", 6, u64);
|
||||
assert_evals_to!("Num.abs 6u128", 6, u128);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||
#[should_panic(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue