diff --git a/compiler/gen/src/llvm/build.rs b/compiler/gen/src/llvm/build.rs index 00465851d2..bd43ec0c99 100644 --- a/compiler/gen/src/llvm/build.rs +++ b/compiler/gen/src/llvm/build.rs @@ -3078,8 +3078,7 @@ fn build_float_binop<'a, 'ctx, 'env>( let result = bd.build_float_add(lhs, rhs, "add_float"); let is_finite = - call_bitcode_fn(NumIsFinite, env, &[result.into()], &bitcode::MATH_IS_FINITE) - .into_int_value(); + call_bitcode_fn(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"); @@ -3099,7 +3098,8 @@ 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(env, &[result.into()], &bitcode::MATH_IS_FINITE).into_int_value(); let is_infinite = bd.build_not(is_finite, "negate"); let struct_type = context.struct_type( diff --git a/compiler/gen/src/llvm/build_str.rs b/compiler/gen/src/llvm/build_str.rs index f9498ec306..e248d327c9 100644 --- a/compiler/gen/src/llvm/build_str.rs +++ b/compiler/gen/src/llvm/build_str.rs @@ -7,6 +7,7 @@ use inkwell::builder::Builder; use inkwell::types::BasicTypeEnum; use inkwell::values::{BasicValueEnum, FunctionValue, IntValue, PointerValue, StructValue}; use inkwell::{AddressSpace, IntPredicate}; +use roc_builtins::bitcode; use roc_module::symbol::Symbol; use roc_mono::layout::{Builtin, Layout}; @@ -34,25 +35,45 @@ pub fn str_split<'a, 'ctx, 'env>( parent, *str_ptr, str_wrapper_type, - |_, _str_len, _str_smallness| { + |_, str_len, _str_smallness| { load_str( env, parent, *delimiter_ptr, str_wrapper_type, - |_, _delimiter_len, _delimiter_smallness| { + |_, delimiter_len, _delimiter_smallness| { let str_ = builder.build_load(*str_ptr, "get_str"); let delimiter = builder.build_load(*delimiter_ptr, "get_delimiter"); - let segment_count = call_bitcode_fn(env, &[str_, delimiter], "count_segments_") - .into_int_value(); + let segment_count = call_bitcode_fn( + env, + &[ + str_, + BasicValueEnum::IntValue(str_len), + delimiter, + BasicValueEnum::IntValue(delimiter_len), + ], + &bitcode::STR_COUNT_SEGMENTS, + ); - let ret_list_ptr = allocate_list(env, inplace, &CHAR_LAYOUT, segment_count); + let ret_list_ptr = + allocate_list(env, inplace, &CHAR_LAYOUT, segment_count.into_int_value()); let ret_list = builder.build_load(ret_list_ptr, "get_str_split_ret_list"); - call_bitcode_fn(env, &[ret_list, str_, delimiter], "str_split_") + call_bitcode_fn( + env, + &[ + ret_list, + segment_count, + str_, + BasicValueEnum::IntValue(str_len), + delimiter, + BasicValueEnum::IntValue(delimiter_len), + ], + &bitcode::STR_STR_SPLIT_IN_PLACE, + ) }, ) },