def options(b: ir.IRBuilder, t: ir.Type) -> ir.Value: new_block = b.function.append_basic_block("block") with b.goto_block(new_block): phi_node = b.phi(t) def ret(value): if not b.block.is_terminated: phi_node.add_incoming(value, b.block) b.branch(new_block) yield ret, phi_node b.position_at_end(new_block)