mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-29 23:04:49 +00:00
No phi node at all, just an conditional branch
This commit is contained in:
parent
0f717ac45a
commit
4e906a5156
1 changed files with 76 additions and 84 deletions
|
@ -1702,15 +1702,19 @@ fn list_join<'a, 'ctx, 'env>(
|
||||||
// inner_list_len > 0
|
// inner_list_len > 0
|
||||||
let inner_list_comparison = list_is_not_empty(builder, ctx, inner_list_len);
|
let inner_list_comparison = list_is_not_empty(builder, ctx, inner_list_len);
|
||||||
|
|
||||||
let build_empty = || {
|
let inner_list_non_empty_block =
|
||||||
BasicValueEnum::PointerValue(
|
ctx.append_basic_block(parent, "inner_list_non_empty");
|
||||||
builder
|
|
||||||
.build_load(dest_elem_ptr_alloca, "load_dest_elem_ptr")
|
let after_inner_list_non_empty_block =
|
||||||
.into_pointer_value(),
|
ctx.append_basic_block(parent, "branchcont");
|
||||||
)
|
|
||||||
};
|
builder.build_conditional_branch(
|
||||||
|
inner_list_comparison,
|
||||||
|
inner_list_non_empty_block,
|
||||||
|
after_inner_list_non_empty_block,
|
||||||
|
);
|
||||||
|
builder.position_at_end(inner_list_non_empty_block);
|
||||||
|
|
||||||
let build_non_empty = || {
|
|
||||||
let inner_index_name = "#inner_index";
|
let inner_index_name = "#inner_index";
|
||||||
let inner_index_alloca =
|
let inner_index_alloca =
|
||||||
builder.build_alloca(ctx.i64_type(), inner_index_name);
|
builder.build_alloca(ctx.i64_type(), inner_index_name);
|
||||||
|
@ -1781,20 +1785,8 @@ fn list_join<'a, 'ctx, 'env>(
|
||||||
);
|
);
|
||||||
builder.position_at_end(after_inner_loop_bb);
|
builder.position_at_end(after_inner_loop_bb);
|
||||||
|
|
||||||
inc_dest_elem_ptr
|
builder.build_unconditional_branch(after_inner_list_non_empty_block);
|
||||||
};
|
builder.position_at_end(after_inner_list_non_empty_block);
|
||||||
|
|
||||||
build_basic_phi2(
|
|
||||||
env,
|
|
||||||
parent,
|
|
||||||
inner_list_comparison,
|
|
||||||
build_non_empty,
|
|
||||||
build_empty,
|
|
||||||
BasicTypeEnum::PointerType(get_ptr_type(
|
|
||||||
&elem_type,
|
|
||||||
AddressSpace::Generic,
|
|
||||||
)),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// #index < outer_list_len
|
// #index < outer_list_len
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue