Drop Layout::struct_no_name_order

This commit is contained in:
Ayaz Hafiz 2023-05-10 15:58:51 -05:00
parent 1170b542b6
commit 4296d5a349
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
11 changed files with 58 additions and 62 deletions

View file

@ -1348,7 +1348,7 @@ pub fn build_exp_expr<'a, 'ctx>(
let field_layouts = tag_layouts[*tag_id as usize];
let struct_layout =
layout_interner.insert(Layout::struct_no_name_order(field_layouts));
layout_interner.insert_no_semantic(LayoutRepr::struct_(field_layouts));
let struct_type = basic_type_from_layout(env, layout_interner, struct_layout);
let opaque_data_ptr = env
@ -1405,7 +1405,7 @@ pub fn build_exp_expr<'a, 'ctx>(
}
UnionLayout::NonNullableUnwrapped(field_layouts) => {
let struct_layout =
layout_interner.insert(Layout::struct_no_name_order(field_layouts));
layout_interner.insert_no_semantic(LayoutRepr::struct_(field_layouts));
let struct_type = basic_type_from_layout(env, layout_interner, struct_layout);
let target_loaded_type = basic_type_from_layout(env, layout_interner, layout);
@ -1456,7 +1456,7 @@ pub fn build_exp_expr<'a, 'ctx>(
let field_layouts = other_fields;
let struct_layout =
layout_interner.insert(Layout::struct_no_name_order(field_layouts));
layout_interner.insert_no_semantic(LayoutRepr::struct_(field_layouts));
let struct_type = basic_type_from_layout(env, layout_interner, struct_layout);
let target_loaded_type = basic_type_from_layout(env, layout_interner, layout);
@ -2095,7 +2095,7 @@ fn lookup_at_index_ptr2<'a, 'ctx>(
) -> BasicValueEnum<'ctx> {
let builder = env.builder;
let struct_layout = layout_interner.insert(Layout::struct_no_name_order(field_layouts));
let struct_layout = layout_interner.insert_no_semantic(LayoutRepr::struct_(field_layouts));
let struct_type =
basic_type_from_layout(env, layout_interner, struct_layout).into_struct_type();
@ -3718,7 +3718,7 @@ fn expose_function_to_host_help_c_abi_generic<'a, 'ctx>(
builder.position_at_end(entry);
let wrapped_layout = layout_interner.insert(roc_call_result_layout(
let wrapped_layout = layout_interner.insert_no_semantic(roc_call_result_layout(
env.arena,
return_layout,
env.target_info,
@ -3859,7 +3859,7 @@ fn expose_function_to_host_help_c_abi_gen_test<'a, 'ctx>(
builder.position_at_end(last_block);
let wrapper_result = layout_interner.insert(Layout::struct_no_name_order(
let wrapper_result = layout_interner.insert_no_semantic(LayoutRepr::struct_(
env.arena.alloc([Layout::U64, return_layout]),
));
@ -4473,10 +4473,10 @@ fn roc_call_result_layout<'a>(
arena: &'a Bump,
return_layout: InLayout<'a>,
target_info: TargetInfo,
) -> Layout<'a> {
) -> LayoutRepr<'a> {
let elements = [Layout::U64, Layout::usize(target_info), return_layout];
Layout::struct_no_name_order(arena.alloc(elements))
LayoutRepr::struct_(arena.alloc(elements))
}
fn roc_call_result_type<'ctx>(

View file

@ -11,7 +11,7 @@ use roc_builtins::bitcode::{FloatWidth, IntWidth};
use roc_error_macros::internal_error;
use roc_module::symbol::Symbol;
use roc_mono::layout::{
Builtin, InLayout, Layout, LayoutIds, LayoutInterner, LayoutRepr, STLayoutInterner, UnionLayout,
Builtin, InLayout, LayoutIds, LayoutInterner, LayoutRepr, STLayoutInterner, UnionLayout,
};
use super::build::{load_roc_value, use_roc_value, BuilderExt};
@ -973,7 +973,7 @@ fn build_tag_eq_help<'a, 'ctx>(
env.builder.position_at_end(block);
let struct_layout =
layout_interner.insert(Layout::struct_no_name_order(field_layouts));
layout_interner.insert_no_semantic(LayoutRepr::struct_(field_layouts));
let answer = eq_ptr_to_struct(
env,
@ -1046,7 +1046,7 @@ fn build_tag_eq_help<'a, 'ctx>(
env.builder.position_at_end(block);
let struct_layout =
layout_interner.insert(Layout::struct_no_name_order(field_layouts));
layout_interner.insert_no_semantic(LayoutRepr::struct_(field_layouts));
let answer = eq_ptr_to_struct(
env,
@ -1108,7 +1108,8 @@ fn build_tag_eq_help<'a, 'ctx>(
env.builder.position_at_end(compare_other);
let struct_layout = layout_interner.insert(Layout::struct_no_name_order(other_fields));
let struct_layout =
layout_interner.insert_no_semantic(LayoutRepr::struct_(other_fields));
let answer = eq_ptr_to_struct(
env,
@ -1208,7 +1209,7 @@ fn build_tag_eq_help<'a, 'ctx>(
env.builder.position_at_end(block);
let struct_layout =
layout_interner.insert(Layout::struct_no_name_order(field_layouts));
layout_interner.insert_no_semantic(LayoutRepr::struct_(field_layouts));
let answer = eq_ptr_to_struct(
env,
@ -1248,7 +1249,8 @@ fn build_tag_eq_help<'a, 'ctx>(
env.builder.position_at_end(compare_fields);
let struct_layout = layout_interner.insert(Layout::struct_no_name_order(field_layouts));
let struct_layout =
layout_interner.insert_no_semantic(LayoutRepr::struct_(field_layouts));
let answer = eq_ptr_to_struct(
env,

View file

@ -13,7 +13,7 @@ use roc_error_macros::internal_error;
use roc_module::symbol::Symbol;
use roc_mono::ir::LookupType;
use roc_mono::layout::{
Builtin, InLayout, Layout, LayoutIds, LayoutInterner, LayoutRepr, STLayoutInterner, UnionLayout,
Builtin, InLayout, LayoutIds, LayoutInterner, LayoutRepr, STLayoutInterner, UnionLayout,
};
use roc_region::all::Region;
@ -426,7 +426,7 @@ fn build_clone_struct<'a, 'ctx>(
value: BasicValueEnum<'ctx>,
field_layouts: &[InLayout<'a>],
) -> IntValue<'ctx> {
let layout = Layout::struct_no_name_order(field_layouts);
let layout = LayoutRepr::struct_(field_layouts);
if layout.safe_to_memcpy(layout_interner) {
build_copy(env, ptr, cursors.offset, value)
@ -689,8 +689,8 @@ fn build_clone_tag_help<'a, 'ctx>(
);
// load the tag payload (if any)
let payload_layout = Layout::struct_no_name_order(field_layouts);
let payload_in_layout = layout_interner.insert(payload_layout);
let payload_layout = LayoutRepr::struct_(field_layouts);
let payload_in_layout = layout_interner.insert_no_semantic(payload_layout);
let opaque_payload_ptr = env
.builder
@ -748,11 +748,11 @@ fn build_clone_tag_help<'a, 'ctx>(
let tag_value = tag_pointer_clear_tag_id(env, tag_value.into_pointer_value());
let layout = layout_interner.insert(Layout::struct_no_name_order(field_layouts));
let layout = layout_interner.insert_no_semantic(LayoutRepr::struct_(field_layouts));
let layout = if union_layout.stores_tag_id_in_pointer(env.target_info) {
layout
} else {
layout_interner.insert(Layout::struct_no_name_order(
layout_interner.insert_no_semantic(LayoutRepr::struct_(
env.arena.alloc([layout, union_layout.tag_id_layout()]),
))
};
@ -797,7 +797,7 @@ fn build_clone_tag_help<'a, 'ctx>(
build_copy(env, ptr, offset, extra_offset.into());
let layout = layout_interner.insert(Layout::struct_no_name_order(fields));
let layout = layout_interner.insert_no_semantic(LayoutRepr::struct_(fields));
let basic_type = basic_type_from_layout(env, layout_interner, layout);
let (width, _) = union_layout.data_size_and_alignment(layout_interner, env.target_info);
@ -853,7 +853,7 @@ fn build_clone_tag_help<'a, 'ctx>(
other_tags[i]
};
let layout = layout_interner.insert(Layout::struct_no_name_order(fields));
let layout = layout_interner.insert_no_semantic(LayoutRepr::struct_(fields));
let basic_type = basic_type_from_layout(env, layout_interner, layout);
let (width, _) =
@ -928,7 +928,7 @@ fn build_clone_tag_help<'a, 'ctx>(
// write the "pointer" af the current offset
build_copy(env, ptr, offset, extra_offset.into());
let layout = layout_interner.insert(Layout::struct_no_name_order(other_fields));
let layout = layout_interner.insert_no_semantic(LayoutRepr::struct_(other_fields));
let basic_type = basic_type_from_layout(env, layout_interner, layout);
let cursors = Cursors {

View file

@ -19,7 +19,7 @@ use inkwell::{AddressSpace, IntPredicate};
use roc_module::symbol::Interns;
use roc_module::symbol::Symbol;
use roc_mono::layout::{
Builtin, InLayout, Layout, LayoutIds, LayoutInterner, LayoutRepr, STLayoutInterner, UnionLayout,
Builtin, InLayout, LayoutIds, LayoutInterner, LayoutRepr, STLayoutInterner, UnionLayout,
};
use super::build::{cast_if_necessary_for_opaque_recursive_pointers, load_roc_value, FunctionSpec};
@ -267,7 +267,7 @@ fn modify_refcount_struct<'a, 'ctx>(
let block = env.builder.get_insert_block().expect("to be in a function");
let di_location = env.builder.get_current_debug_location().unwrap();
let layout = layout_interner.insert(Layout::struct_no_name_order(layouts));
let layout = layout_interner.insert_no_semantic(LayoutRepr::struct_(layouts));
let (_, fn_name) = function_name_from_mode(
layout_ids,
@ -1274,7 +1274,7 @@ fn build_rec_union_recursive_decrement<'a, 'ctx>(
env.builder.position_at_end(block);
let fields_struct = layout_interner.insert(Layout::struct_no_name_order(field_layouts));
let fields_struct = layout_interner.insert_no_semantic(LayoutRepr::struct_(field_layouts));
let wrapper_type = basic_type_from_layout(env, layout_interner, fields_struct);
// cast the opaque pointer to a pointer of the correct shape
@ -1744,7 +1744,7 @@ fn modify_refcount_nonrecursive_help<'a, 'ctx>(
let block = env.context.append_basic_block(parent, "tag_id_modify");
env.builder.position_at_end(block);
let fields_struct = layout_interner.insert(Layout::struct_no_name_order(field_layouts));
let fields_struct = layout_interner.insert_no_semantic(LayoutRepr::struct_(field_layouts));
let data_struct_type = basic_type_from_layout(env, layout_interner, fields_struct);
debug_assert!(data_struct_type.is_struct_type());