forked from M-Labs/nac3
core: Minor cleanup to use ListValue APIs
This commit is contained in:
parent
6d171ec284
commit
05a8948ff2
@ -1016,7 +1016,6 @@ pub fn gen_comprehension<'ctx, G: CodeGenerator>(
|
|||||||
let elem_ty = ctx.get_llvm_type(generator, elt.custom.unwrap());
|
let elem_ty = ctx.get_llvm_type(generator, elt.custom.unwrap());
|
||||||
let is_range = ctx.unifier.unioned(iter.custom.unwrap(), ctx.primitives.range);
|
let is_range = ctx.unifier.unioned(iter.custom.unwrap(), ctx.primitives.range);
|
||||||
let list;
|
let list;
|
||||||
let list_content;
|
|
||||||
|
|
||||||
if is_range {
|
if is_range {
|
||||||
let iter_val = RangeValue::from_ptr_val(iter_val.into_pointer_value(), Some("range"));
|
let iter_val = RangeValue::from_ptr_val(iter_val.into_pointer_value(), Some("range"));
|
||||||
@ -1047,7 +1046,6 @@ pub fn gen_comprehension<'ctx, G: CodeGenerator>(
|
|||||||
list_alloc_size.into_int_value(),
|
list_alloc_size.into_int_value(),
|
||||||
Some("listcomp.addr"),
|
Some("listcomp.addr"),
|
||||||
);
|
);
|
||||||
list_content = list.data().base_ptr(ctx, generator);
|
|
||||||
|
|
||||||
let i = generator.gen_store_target(ctx, target, Some("i.addr"))?.unwrap();
|
let i = generator.gen_store_target(ctx, target, Some("i.addr"))?.unwrap();
|
||||||
ctx.builder
|
ctx.builder
|
||||||
@ -1083,10 +1081,10 @@ pub fn gen_comprehension<'ctx, G: CodeGenerator>(
|
|||||||
)
|
)
|
||||||
.into_int_value();
|
.into_int_value();
|
||||||
list = allocate_list(generator, ctx, Some(elem_ty), length, Some("listcomp"));
|
list = allocate_list(generator, ctx, Some(elem_ty), length, Some("listcomp"));
|
||||||
list_content = list.data().base_ptr(ctx, generator);
|
|
||||||
let counter = generator.gen_var_alloc(ctx, size_t.into(), Some("counter.addr"))?;
|
let counter = generator.gen_var_alloc(ctx, size_t.into(), Some("counter.addr"))?;
|
||||||
// counter = -1
|
// counter = -1
|
||||||
ctx.builder.build_store(counter, size_t.const_int(u64::MAX, true)).unwrap();
|
ctx.builder.build_store(counter, size_t.const_all_ones()).unwrap();
|
||||||
ctx.builder.build_unconditional_branch(test_bb).unwrap();
|
ctx.builder.build_unconditional_branch(test_bb).unwrap();
|
||||||
|
|
||||||
ctx.builder.position_at_end(test_bb);
|
ctx.builder.position_at_end(test_bb);
|
||||||
@ -1143,7 +1141,8 @@ pub fn gen_comprehension<'ctx, G: CodeGenerator>(
|
|||||||
return Ok(None);
|
return Ok(None);
|
||||||
};
|
};
|
||||||
let i = ctx.builder.build_load(index, "i").map(BasicValueEnum::into_int_value).unwrap();
|
let i = ctx.builder.build_load(index, "i").map(BasicValueEnum::into_int_value).unwrap();
|
||||||
let elem_ptr = unsafe { ctx.builder.build_gep(list_content, &[i], "elem_ptr") }.unwrap();
|
let elem_ptr =
|
||||||
|
unsafe { list.data().ptr_offset_unchecked(ctx, generator, &i, Some("elem_ptr")) };
|
||||||
let val = elem.to_basic_value_enum(ctx, generator, elt.custom.unwrap())?;
|
let val = elem.to_basic_value_enum(ctx, generator, elt.custom.unwrap())?;
|
||||||
ctx.builder.build_store(elem_ptr, val).unwrap();
|
ctx.builder.build_store(elem_ptr, val).unwrap();
|
||||||
ctx.builder
|
ctx.builder
|
||||||
|
Loading…
Reference in New Issue
Block a user