diff options
| author | gingerBill <bill@gingerbill.org> | 2018-05-20 17:31:46 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2018-05-20 17:31:46 +0100 |
| commit | 4d052d5119653c80f4c7b7c6695256e0540a55a5 (patch) | |
| tree | 0093201366301e0178863a44e149f04bc673d22d /src/ir_print.cpp | |
| parent | 7e4c6434012fbe4e8d76f9fb852a0f136c7bc795 (diff) | |
Remove code relating to default struct values
Diffstat (limited to 'src/ir_print.cpp')
| -rw-r--r-- | src/ir_print.cpp | 117 |
1 files changed, 16 insertions, 101 deletions
diff --git a/src/ir_print.cpp b/src/ir_print.cpp index 1d98557d4..4375cd7e1 100644 --- a/src/ir_print.cpp +++ b/src/ir_print.cpp @@ -308,16 +308,16 @@ void ir_print_type(irFileBuffer *f, irModule *m, Type *t, bool in_struct) { case Basic_b32: ir_write_str_lit(f, "i32"); return; case Basic_b64: ir_write_str_lit(f, "i64"); return; - case Basic_i8: ir_write_str_lit(f, "i8"); return; - case Basic_u8: ir_write_str_lit(f, "i8"); return; - case Basic_i16: ir_write_str_lit(f, "i16"); return; - case Basic_u16: ir_write_str_lit(f, "i16"); return; - case Basic_i32: ir_write_str_lit(f, "i32"); return; - case Basic_u32: ir_write_str_lit(f, "i32"); return; - case Basic_i64: ir_write_str_lit(f, "i64"); return; - case Basic_u64: ir_write_str_lit(f, "i64"); return; + case Basic_i8: ir_write_str_lit(f, "i8"); return; + case Basic_u8: ir_write_str_lit(f, "i8"); return; + case Basic_i16: ir_write_str_lit(f, "i16"); return; + case Basic_u16: ir_write_str_lit(f, "i16"); return; + case Basic_i32: ir_write_str_lit(f, "i32"); return; + case Basic_u32: ir_write_str_lit(f, "i32"); return; + case Basic_i64: ir_write_str_lit(f, "i64"); return; + case Basic_u64: ir_write_str_lit(f, "i64"); return; - case Basic_rune: ir_write_str_lit(f, "i32"); return; + case Basic_rune: ir_write_str_lit(f, "i32"); return; case Basic_int: case Basic_uint: @@ -503,11 +503,7 @@ void ir_print_compound_element(irFileBuffer *f, irModule *m, ExactValue v, Type ir_write_byte(f, ' '); if (v.kind == ExactValue_Invalid || !elem_type_can_be_constant(elem_type)) { - if (ir_type_has_default_values(elem_type)) { - ir_print_exact_value(f, m, v, elem_type); - } else { - ir_fprintf(f, "zeroinitializer"); - } + ir_fprintf(f, "zeroinitializer"); } else { ir_print_exact_value(f, m, v, elem_type); } @@ -675,13 +671,8 @@ void ir_print_exact_value(irFileBuffer *f, irModule *m, ExactValue value, Type * Type *elem_type = type->Array.elem; isize elem_count = cl->elems.count; - bool has_defaults = ir_type_has_default_values(type); if (elem_count == 0) { - if (!has_defaults) { - ir_write_str_lit(f, "zeroinitializer"); - } else { - ir_print_exact_value(f, m, empty_exact_value, type); - } + ir_write_str_lit(f, "zeroinitializer"); break; } GB_ASSERT_MSG(elem_count == type->Array.count, "%td != %td", elem_count, type->Array.count); @@ -706,8 +697,7 @@ void ir_print_exact_value(irFileBuffer *f, irModule *m, ExactValue value, Type * ast_node(cl, CompoundLit, value.value_compound); - bool has_defaults = ir_type_has_default_values(type); - if (cl->elems.count == 0 && !has_defaults) { + if (cl->elems.count == 0) { ir_write_str_lit(f, "zeroinitializer"); break; } @@ -748,18 +738,6 @@ void ir_print_exact_value(irFileBuffer *f, irModule *m, ExactValue value, Type * } } - for (isize i = 0; i < value_count; i++) { - if (visited[i]) continue; - Entity *f = type->Struct.fields[i]; - ExactValue v = {}; - if (!f->Variable.default_is_nil) { - v = f->Variable.default_value; - } - values[i] = v; - } - - - if (type->Struct.is_packed) ir_write_byte(f, '<'); ir_write_byte(f, '{'); if (type->Struct.custom_align > 0) { @@ -773,13 +751,7 @@ void ir_print_exact_value(irFileBuffer *f, irModule *m, ExactValue value, Type * for (isize i = 0; i < value_count; i++) { if (i > 0) ir_write_string(f, str_lit(", ")); Entity *e = type->Struct.fields[i]; - - if (!visited[i] && e->Variable.default_is_undef) { - ir_print_type(f, m, e->type); - ir_write_str_lit(f, " undef"); - } else { - ir_print_compound_element(f, m, values[i], e->type); - } + ir_print_compound_element(f, m, values[i], e->type); } @@ -809,63 +781,10 @@ void ir_print_exact_value(irFileBuffer *f, irModule *m, ExactValue value, Type * ir_print_value(f, m, val, type); break; } - default: { - bool has_defaults = ir_type_has_default_values(type); - if (!has_defaults) { - ir_write_str_lit(f, "zeroinitializer"); - } else { - if (is_type_struct(type)) { - i32 value_count = cast(i32)type->Struct.fields.count; - if (type->Struct.is_packed) ir_write_byte(f, '<'); - ir_write_byte(f, '{'); - if (type->Struct.custom_align > 0) { - ir_fprintf(f, "[0 x <%lld x i8>] zeroinitializer", cast(i64)type->Struct.custom_align); - if (value_count > 0) { - ir_write_string(f, str_lit(", ")); - } - } - - for (isize i = 0; i < value_count; i++) { - if (i > 0) ir_write_string(f, str_lit(", ")); - Entity *e = type->Struct.fields[i]; - if (e->Variable.default_is_undef) { - ir_print_type(f, m, e->type); - ir_write_str_lit(f, " undef"); - } else { - ExactValue value = {}; - if (!e->Variable.default_is_nil) { - value = e->Variable.default_value; - } - ir_print_compound_element(f, m, value, e->type); - } - } - - ir_write_byte(f, '}'); - if (type->Struct.is_packed) ir_write_byte(f, '>'); - - } else if (is_type_array(type)) { - i64 count = type->Array.count; - if (count == 0) { - ir_write_str_lit(f, "zeroinitializer"); - } else { - Type *elem = type->Array.elem; - ir_write_byte(f, '['); - for (i64 i = 0; i < count; i++) { - if (i > 0) ir_write_string(f, str_lit(", ")); - ir_print_type(f, m, elem); - ir_write_byte(f, ' '); - ir_print_exact_value(f, m, empty_exact_value, elem); - } - ir_write_byte(f, ']'); - } - } else { - GB_PANIC("Unknown type for default values"); - } - } - // GB_PANIC("Invalid ExactValue: %d", value.kind); + default: + ir_write_str_lit(f, "zeroinitializer"); break; } - } } void ir_print_block_name(irFileBuffer *f, irBlock *b) { @@ -1873,11 +1792,7 @@ void print_llvm_ir(irGen *ir) { if (g->value != nullptr) { ir_print_value(f, m, g->value, g->entity->type); } else { - if (ir_type_has_default_values(g->entity->type)) { - ir_print_exact_value(f, m, empty_exact_value, g->entity->type); - } else { - ir_write_string(f, str_lit("zeroinitializer")); - } + ir_write_string(f, str_lit("zeroinitializer")); } } ir_write_byte(f, '\n'); |