mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-01 07:41:12 +00:00
Bring up variables out of inner loop
This commit is contained in:
parent
362d3908d5
commit
c73e77b5ef
1 changed files with 9 additions and 19 deletions
|
@ -1685,33 +1685,23 @@ fn list_join<'a, 'ctx, 'env>(
|
||||||
|
|
||||||
builder.build_store(index_alloca, next_index);
|
builder.build_store(index_alloca, next_index);
|
||||||
|
|
||||||
// The pointer to the list in the outer list (the list of lists)
|
let inner_list_wrapper = {
|
||||||
let (inner_list_len, inner_list_ptr) = {
|
|
||||||
let wrapper_ptr = unsafe {
|
let wrapper_ptr = unsafe {
|
||||||
builder.build_in_bounds_gep(outer_list_ptr, &[curr_index], "load_index")
|
builder.build_in_bounds_gep(outer_list_ptr, &[curr_index], "load_index")
|
||||||
};
|
};
|
||||||
let wrapper = builder
|
|
||||||
.build_load(wrapper_ptr, "inner_list_wrapper")
|
|
||||||
.into_struct_value();
|
|
||||||
let elem_ptr_type = get_ptr_type(&elem_type, AddressSpace::Generic);
|
|
||||||
|
|
||||||
(
|
builder
|
||||||
load_list_len(builder, wrapper),
|
.build_load(wrapper_ptr, "inner_list_wrapper")
|
||||||
load_list_ptr(builder, wrapper, elem_ptr_type),
|
.into_struct_value()
|
||||||
)
|
|
||||||
};
|
};
|
||||||
|
let inner_list_len = load_list_len(builder, inner_list_wrapper);
|
||||||
|
let inner_list_ptr = load_list_ptr(builder, inner_list_wrapper, elem_ptr_type);
|
||||||
|
|
||||||
|
let inner_index_name = "#inner_index";
|
||||||
|
let inner_index_alloca = builder.build_alloca(ctx.i64_type(), inner_index_name);
|
||||||
|
|
||||||
// Inner Loop
|
// Inner Loop
|
||||||
{
|
{
|
||||||
let dest_elem_ptr = builder
|
|
||||||
.build_load(dest_elem_ptr_alloca, "load_dest_elem_ptr")
|
|
||||||
.into_pointer_value();
|
|
||||||
|
|
||||||
let inner_index_name = "#inner_index";
|
|
||||||
|
|
||||||
let inner_index_alloca =
|
|
||||||
builder.build_alloca(ctx.i64_type(), inner_index_name);
|
|
||||||
|
|
||||||
let inner_list_index = ctx.i64_type().const_int(0, false);
|
let inner_list_index = ctx.i64_type().const_int(0, false);
|
||||||
|
|
||||||
builder.build_store(inner_index_alloca, inner_list_index);
|
builder.build_store(inner_index_alloca, inner_list_index);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue