Merge in remote trunk

This commit is contained in:
Chad Stearns 2020-11-01 11:38:44 -05:00
commit c412a8e0db
68 changed files with 2549 additions and 1637 deletions

View file

@ -2180,7 +2180,7 @@ fn run_low_level<'a, 'ctx, 'env>(
list_join(env, inplace, parent, list, outer_list_layout)
}
NumAbs | NumNeg | NumRound | NumSqrtUnchecked | NumSin | NumCos | NumCeiling | NumFloor
| NumToFloat | NumIsFinite | NumAtan => {
| NumToFloat | NumIsFinite | NumAtan | NumAcos | NumAsin => {
debug_assert_eq!(args.len(), 1);
let (arg, arg_layout) = load_symbol_and_layout(env, scope, &args[0]);
@ -2538,7 +2538,7 @@ fn build_int_binop<'a, 'ctx, 'env>(
NumLte => bd.build_int_compare(SLE, lhs, rhs, "int_lte").into(),
NumRemUnchecked => bd.build_int_signed_rem(lhs, rhs, "rem_int").into(),
NumDivUnchecked => bd.build_int_signed_div(lhs, rhs, "div_int").into(),
NumPowInt => call_bitcode_fn(env, &[lhs.into(), rhs.into()], "pow_int_"),
NumPowInt => call_bitcode_fn(env, &[lhs.into(), rhs.into()], &bitcode::MATH_POW_INT),
_ => {
unreachable!("Unrecognized int binary operation: {:?}", op);
}
@ -2584,7 +2584,9 @@ fn build_float_binop<'a, 'ctx, 'env>(
let result = bd.build_float_add(lhs, rhs, "add_float");
let is_finite = call_bitcode_fn(env, &[result.into()], "is_finite_").into_int_value();
let is_finite =
call_bitcode_fn(NumIsFinite, env, &[result.into()], &bitcode::MATH_IS_FINITE)
.into_int_value();
let then_block = context.append_basic_block(parent, "then_block");
let throw_block = context.append_basic_block(parent, "throw_block");
@ -2733,8 +2735,10 @@ fn build_float_unary_op<'a, 'ctx, 'env>(
env.context.i64_type(),
"num_floor",
),
NumIsFinite => call_bitcode_fn(env, &[arg.into()], "is_finite_"),
NumAtan => call_bitcode_fn(env, &[arg.into()], "atan_"),
NumIsFinite => call_bitcode_fn(env, &[arg.into()], &bitcode::MATH_IS_FINITE),
NumAtan => call_bitcode_fn(env, &[arg.into()], &bitcode::MATH_ATAN),
NumAcos => call_bitcode_fn(env, &[arg.into()], &bitcode::MATH_ACOS),
NumAsin => call_bitcode_fn(env, &[arg.into()], &bitcode::MATH_ASIN),
_ => {
unreachable!("Unrecognized int unary operation: {:?}", op);
}