call_roc_function takes repr

This commit is contained in:
Ayaz Hafiz 2023-06-16 22:26:30 -05:00
parent 46e0ce32f4
commit 8aef12bd36
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
3 changed files with 74 additions and 57 deletions

View file

@ -1332,21 +1332,29 @@ pub(crate) fn run_low_level<'a, 'ctx>(
BasicValueEnum::IntValue(refcount_ptr.is_1(env))
}
Unreachable => match RocReturn::from_layout(layout_interner, layout) {
RocReturn::Return => {
let basic_type =
basic_type_from_layout(env, layout_interner, layout_interner.get_repr(layout));
basic_type.const_zero()
}
RocReturn::ByPointer => {
let basic_type =
basic_type_from_layout(env, layout_interner, layout_interner.get_repr(layout));
let ptr = env.builder.build_alloca(basic_type, "unreachable_alloca");
env.builder.build_store(ptr, basic_type.const_zero());
Unreachable => {
match RocReturn::from_layout(layout_interner, layout_interner.get_repr(layout)) {
RocReturn::Return => {
let basic_type = basic_type_from_layout(
env,
layout_interner,
layout_interner.get_repr(layout),
);
basic_type.const_zero()
}
RocReturn::ByPointer => {
let basic_type = basic_type_from_layout(
env,
layout_interner,
layout_interner.get_repr(layout),
);
let ptr = env.builder.build_alloca(basic_type, "unreachable_alloca");
env.builder.build_store(ptr, basic_type.const_zero());
ptr.into()
ptr.into()
}
}
},
}
DictPseudoSeed => {
// Dict.pseudoSeed : {} -> u64