fn strset<1>(str: array(u8, #0), byte: u8) -> array(u8, #0) zero = constant(u64, 0) one = constant(u64, 1) bound = dynamic_constant(#0) loop = region(start, if_true) idx = phi(loop, zero, idx_inc) str_inc = phi(loop, str, write) idx_inc = add(idx, one) in_bounds = lt(idx_inc, bound) read = read(str_inc, position(idx)) write = write(str_inc, byte, position(idx)) continue = ne(read, byte) if_cond = and(continue, in_bounds) if = if(loop, if_cond) if_false = projection(if, 0) if_true = projection(if, 1) r = return(if_false, str_inc)