From 5fb98609cd9d5d7efea6d54a722181ff46413333 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 19 Jul 2023 18:03:42 +0100 Subject: [PATCH] Implement type `switch` statement for `union`s --- src/tilde/tb.lib | Bin 4146174 -> 4146648 bytes src/tilde_expr.cpp | 38 +++++-- src/tilde_stmt.cpp | 257 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 284 insertions(+), 11 deletions(-) diff --git a/src/tilde/tb.lib b/src/tilde/tb.lib index c42e02d98ba87adcc1530bd33c6e26e082e9795b..81c92585485c35054d211f10c3ba4411fdcd58c6 100644 GIT binary patch delta 126995 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ⅇ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≶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 delta 124272 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

L>#+?lR&%^wmWJ1^#iRZ>l6@M?^)Jq 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 diff --git a/src/tilde_expr.cpp b/src/tilde_expr.cpp index c2453b571..f3801682d 100644 --- a/src/tilde_expr.cpp +++ b/src/tilde_expr.cpp @@ -125,6 +125,26 @@ gb_internal cgValue cg_typeid(cgProcedure *p, Type *t) { return {}; } +gb_internal cgValue cg_emit_union_tag_ptr(cgProcedure *p, cgValue const &parent_ptr) { + Type *t = parent_ptr.type; + Type *ut = base_type(type_deref(t)); + GB_ASSERT_MSG(is_type_pointer(t), "%s", type_to_string(t)); + GB_ASSERT_MSG(ut->kind == Type_Union, "%s", type_to_string(t)); + + GB_ASSERT(!is_type_union_maybe_pointer_original_alignment(ut)); + GB_ASSERT(!is_type_union_maybe_pointer(ut)); + GB_ASSERT(type_size_of(ut) > 0); + + Type *tag_type = union_tag_type(ut); + i64 tag_offset = ut->Union.variant_block_size; + + GB_ASSERT(parent_ptr.kind == cgValue_Value); + TB_Node *ptr = parent_ptr.node; + TB_Node *tag_ptr = tb_inst_member_access(p->func, ptr, tag_offset); + return cg_value(tag_ptr, alloc_type_pointer(tag_type)); +} + + gb_internal cgValue cg_correct_endianness(cgProcedure *p, cgValue value) { Type *src = core_type(value.type); @@ -166,7 +186,9 @@ gb_internal cgValue cg_emit_transmute(cgProcedure *p, cgValue value, Type *type) case cgValue_Value: GB_ASSERT(!TB_IS_VOID_TYPE(dt)); value.type = type; - value.node = tb_inst_bitcast(p->func, value.node, dt); + if (value.node->dt.raw != dt.raw) { + value.node = tb_inst_bitcast(p->func, value.node, dt); + } return value; case cgValue_Addr: value.type = type; @@ -1037,30 +1059,30 @@ gb_internal cgValue cg_emit_conv(cgProcedure *p, cgValue value, Type *t) { // Pointer <-> Pointer if (is_type_pointer(src) && is_type_pointer(dst)) { - return cg_value(tb_inst_bitcast(p->func, value.node, dt), t); + return cg_value(value.node, t); } if (is_type_multi_pointer(src) && is_type_pointer(dst)) { - return cg_value(tb_inst_bitcast(p->func, value.node, dt), t); + return cg_value(value.node, t); } if (is_type_pointer(src) && is_type_multi_pointer(dst)) { - return cg_value(tb_inst_bitcast(p->func, value.node, dt), t); + return cg_value(value.node, t); } if (is_type_multi_pointer(src) && is_type_multi_pointer(dst)) { - return cg_value(tb_inst_bitcast(p->func, value.node, dt), t); + return cg_value(value.node, t); } // proc <-> proc if (is_type_proc(src) && is_type_proc(dst)) { - return cg_value(tb_inst_bitcast(p->func, value.node, dt), t); + return cg_value(value.node, t); } // pointer -> proc if (is_type_pointer(src) && is_type_proc(dst)) { - return cg_value(tb_inst_bitcast(p->func, value.node, dt), t); + return cg_value(value.node, t); } // proc -> pointer if (is_type_proc(src) && is_type_pointer(dst)) { - return cg_value(tb_inst_bitcast(p->func, value.node, dt), t); + return cg_value(value.node, t); } // []byte/[]u8 <-> string diff --git a/src/tilde_stmt.cpp b/src/tilde_stmt.cpp index d2b57749a..a2dfa0257 100644 --- a/src/tilde_stmt.cpp +++ b/src/tilde_stmt.cpp @@ -1273,6 +1273,258 @@ gb_internal void cg_build_switch_stmt(cgProcedure *p, Ast *node) { cg_scope_close(p, cgDeferExit_Default, done); } +gb_internal void cg_type_case_body(cgProcedure *p, Ast *label, Ast *clause, TB_Node *body_region, TB_Node *done_region) { + // ast_node(cc, CaseClause, clause); + + // cg_push_target_list(p, label, done, nullptr, nullptr); + // cg_build_stmt_list(p, cc->stmts); + // cg_scope_close(p, cgDeferExit_Default, body_region); + // cg_pop_target_list(p); + + // cg_emit_goto(p, done_region); +} + +gb_internal void cg_build_type_switch_stmt(cgProcedure *p, Ast *node) { + ast_node(ss, TypeSwitchStmt, node); + + cg_scope_open(p, ss->scope); + + ast_node(as, AssignStmt, ss->tag); + GB_ASSERT(as->lhs.count == 1); + GB_ASSERT(as->rhs.count == 1); + + cgValue parent = cg_build_expr(p, as->rhs[0]); + bool is_parent_ptr = is_type_pointer(parent.type); + Type *parent_base_type = type_deref(parent.type); + gb_unused(parent_base_type); + + TypeSwitchKind switch_kind = check_valid_type_switch_type(parent.type); + GB_ASSERT(switch_kind != TypeSwitch_Invalid); + + + cgValue parent_value = parent; + + cgValue parent_ptr = parent; + if (!is_parent_ptr) { + parent_ptr = cg_address_from_load_or_generate_local(p, parent); + } + + cgValue tag = {}; + cgValue union_data = {}; + if (switch_kind == TypeSwitch_Union) { + union_data = cg_emit_conv(p, parent_ptr, t_rawptr); + Type *union_type = type_deref(parent_ptr.type); + if (is_type_union_maybe_pointer(union_type)) { + tag = cg_emit_conv(p, cg_emit_comp_against_nil(p, Token_NotEq, union_data), t_int); + } else if (union_tag_size(union_type) == 0) { + tag = {}; // there is no tag for a zero sized union + } else { + cgValue tag_ptr = cg_emit_union_tag_ptr(p, parent_ptr); + tag = cg_emit_load(p, tag_ptr); + } + } else if (switch_kind == TypeSwitch_Any) { + GB_PANIC("TODO(bill): type switch any"); + tag = cg_emit_load(p, cg_emit_struct_ep(p, parent_ptr, 1)); + } else { + GB_PANIC("Unknown switch kind"); + } + + ast_node(body, BlockStmt, ss->body); + + TB_Node *done_region = cg_control_region(p, "typeswitch_done"); + TB_Node *else_region = done_region; + TB_Node *default_region = nullptr; + isize num_cases = 0; + + for (Ast *clause : body->stmts) { + ast_node(cc, CaseClause, clause); + num_cases += cc->list.count; + if (cc->list.count == 0) { + GB_ASSERT(default_region == nullptr); + default_region = cg_control_region(p, "typeswitch_default_body"); + else_region = default_region; + } + } + + bool all_by_reference = false; + for (Ast *clause : body->stmts) { + ast_node(cc, CaseClause, clause); + if (cc->list.count != 1) { + continue; + } + Entity *case_entity = implicit_entity_of_node(clause); + all_by_reference |= (case_entity->flags & EntityFlag_Value) == 0; + break; + } + + TB_Node *backing_ptr = nullptr; + if (!all_by_reference) { + bool variants_found = false; + i64 max_size = 0; + i64 max_align = 1; + for (Ast *clause : body->stmts) { + ast_node(cc, CaseClause, clause); + if (cc->list.count != 1) { + continue; + } + Entity *case_entity = implicit_entity_of_node(clause); + if (!is_type_untyped_nil(case_entity->type)) { + max_size = gb_max(max_size, type_size_of(case_entity->type)); + max_align = gb_max(max_align, type_align_of(case_entity->type)); + variants_found = true; + } + } + if (variants_found) { + backing_ptr = tb_inst_local(p->func, cast(TB_CharUnits)max_size, cast(TB_CharUnits)max_align); + } + } + + TEMPORARY_ALLOCATOR_GUARD(); + TB_Node **control_regions = gb_alloc_array(temporary_allocator(), TB_Node *, body->stmts.count); + TB_SwitchEntry *switch_entries = gb_alloc_array(temporary_allocator(), TB_SwitchEntry, num_cases); + + isize case_index = 0; + for_array(i, body->stmts) { + Ast *clause = body->stmts[i]; + ast_node(cc, CaseClause, clause); + if (cc->list.count == 0) { + control_regions[i] = default_region; + continue; + } + + TB_Node *region = cg_control_region(p, "typeswitch_body"); + control_regions[i] = region; + + for (Ast *type_expr : cc->list) { + Type *case_type = type_of_expr(type_expr); + i64 key = -1; + if (switch_kind == TypeSwitch_Union) { + Type *ut = base_type(type_deref(parent.type)); + if (is_type_untyped_nil(case_type)) { + key = 0; + } else { + key = union_variant_index(ut, case_type); + } + } else if (switch_kind == TypeSwitch_Any) { + GB_PANIC("TODO(bill): any"); + // if (is_type_untyped_nil(case_type)) { + // saw_nil = true; + // on_val = lb_const_nil(m, t_typeid); + // } else { + // on_val = lb_typeid(m, case_type); + // } + } + GB_ASSERT(key >= 0); + + switch_entries[case_index++] = TB_SwitchEntry{key, region}; + } + } + + GB_ASSERT(case_index == num_cases); + + { + TB_DataType dt = {}; + TB_Node *key = nullptr; + if (type_size_of(parent_base_type) == 0) { + GB_ASSERT(tag.node == nullptr); + key = tb_inst_bool(p->func, false); + dt = cg_data_type(t_bool); + } else { + GB_ASSERT(tag.kind == cgValue_Value && tag.node != nullptr); + dt = cg_data_type(tag.type); + key = tag.node; + } + + GB_ASSERT(!TB_IS_VOID_TYPE(dt)); + tb_inst_branch(p->func, dt, key, else_region, num_cases, switch_entries); + } + + + for_array(i, body->stmts) { + Ast *clause = body->stmts[i]; + ast_node(cc, CaseClause, clause); + + bool saw_nil = false; + for (Ast *type_expr : cc->list) { + Type *case_type = type_of_expr(type_expr); + if (is_type_untyped_nil(case_type)) { + saw_nil = true; + } + } + + Entity *case_entity = implicit_entity_of_node(clause); + bool by_reference = (case_entity->flags & EntityFlag_Value) == 0; + + cg_scope_open(p, cc->scope); + + TB_Node *body_region = control_regions[i]; + tb_inst_set_control(p->func, body_region); + + if (cc->list.count == 1 && !saw_nil) { + cgValue data = {}; + if (switch_kind == TypeSwitch_Union) { + data = union_data; + } else if (switch_kind == TypeSwitch_Any) { + data = cg_emit_load(p, cg_emit_struct_ep(p, parent_ptr, 0)); + } + GB_ASSERT(data.kind == cgValue_Value); + + Type *ct = case_entity->type; + Type *ct_ptr = alloc_type_pointer(ct); + + cgValue ptr = {}; + + if (backing_ptr) { // by value + GB_ASSERT(!by_reference); + + i64 size = type_size_of(case_entity->type); + i64 align = type_align_of(case_entity->type); + + // make a copy of the case value + tb_inst_memcpy(p->func, + backing_ptr, // dst + data.node, // src + tb_inst_uint(p->func, TB_TYPE_INT, size), + cast(TB_CharUnits)align, + false + ); + + ptr = cg_value(backing_ptr, ct_ptr); + + } else { // by reference + GB_ASSERT(by_reference); + ptr = cg_emit_conv(p, data, ct_ptr); + } + GB_ASSERT(are_types_identical(case_entity->type, type_deref(ptr.type))); + + cg_add_entity(p->module, case_entity, ptr); + String name = case_entity->token.string; + TB_Attrib *dbg = tb_function_attrib_variable(p->func, name.len, cast(char const *)name.text, cg_debug_type(p->module, ct)); + tb_node_append_attrib(ptr.node, dbg); + } else { + if (case_entity->flags & EntityFlag_Value) { + // by value + cgAddr x = cg_add_local(p, case_entity->type, case_entity, false); + cg_addr_store(p, x, parent_value); + } else { + // by reference + cg_add_entity(p->module, case_entity, parent_value); + } + } + + cg_push_target_list(p, ss->label, done_region, nullptr, nullptr); + cg_build_stmt_list(p, cc->stmts); + cg_scope_close(p, cgDeferExit_Default, body_region); + cg_pop_target_list(p); + + cg_emit_goto(p, done_region); + } + + cg_emit_goto(p, done_region); + tb_inst_set_control(p->func, done_region); + cg_scope_close(p, cgDeferExit_Default, done_region); +} + gb_internal void cg_build_stmt(cgProcedure *p, Ast *node) { Ast *prev_stmt = p->curr_stmt; @@ -1459,9 +1711,8 @@ gb_internal void cg_build_stmt(cgProcedure *p, Ast *node) { cg_build_switch_stmt(p, node); case_end; - case_ast_node(ss, TypeSwitchStmt, node); - GB_PANIC("TODO(bill): cg_build_type_switch_stmt"); - // cg_build_type_switch_stmt(p, ss); + case_ast_node(ts, TypeSwitchStmt, node); + cg_build_type_switch_stmt(p, node); case_end; case_ast_node(ds, DeferStmt, node);