def string_to_volpe(b: ir.IRBuilder, string: ir.Value): with options(b, int64) as (ret, phi): ret(int64(0)) character = b.load(b.gep(string, [phi])) with b.if_then(b.icmp_unsigned("!=", character, char(0))): ret(b.add(phi, int64(1))) new_string = string_type.unwrap()(ir.Undefined) new_string = b.insert_value(new_string, string, 0) new_string = b.insert_value(new_string, phi, 1) return new_string
def codegen(self, builder: ir.IRBuilder, ctx: CodegenContext) -> ir.Value: struct = self.struct.codegen(builder, ctx) value = self.value.codegen(builder, ctx) assert self.idx is not None return builder.insert_value(struct, value, self.idx)