Remove some unneeded zero emits

This commit is contained in:
gingerBill
2018-12-31 13:00:55 +00:00
parent e5f188241c
commit bbece7e910

View File

@@ -2745,7 +2745,6 @@ void ir_emit_zero_init(irProcedure *p, irValue *address, Ast *expr) {
AstPackage *pkg = get_core_package(p->module->info, str_lit("mem"));
if (p->entity != nullptr && p->entity->token.string != "zero" && p->entity->pkg != pkg) {
irValue *v = ir_emit_package_call(p, "mem", "zero", args, expr, ProcInlining_no_inline);
// v->loc = &IR_DEBUG_INFO_EMPTY; // NOTE(bill): remove debug location
}
ir_emit(p, ir_instr_zero_init(p, address));
}
@@ -2772,7 +2771,7 @@ irValue *ir_copy_value_to_ptr(irProcedure *proc, irValue *val, Type *new_type, i
if (alignment < type_alignment) {
alignment = type_alignment;
}
irValue *ptr = ir_add_local_generated(proc, new_type);
irValue *ptr = ir_add_local_generated(proc, new_type, false);
ptr->Instr.Local.alignment = alignment;
ir_emit_store(proc, ptr, val);
return ptr;
@@ -3129,7 +3128,7 @@ irValue *ir_address_from_load_or_generate_local(irProcedure *proc, irValue *val)
}
}
Type *type = ir_type(val);
irValue *local = ir_add_local_generated(proc, type);
irValue *local = ir_add_local_generated(proc, type, false);
ir_emit_store(proc, local, val);
return local;
}
@@ -3165,7 +3164,7 @@ irValue *ir_insert_dynamic_map_key_and_value(irProcedure *proc, irValue *addr, T
irValue *key = ir_gen_map_key(proc, map_key, map_type->Map.key);
irValue *v = ir_emit_conv(proc, map_value, map_type->Map.value);
irValue *ptr = ir_add_local_generated(proc, ir_type(v));
irValue *ptr = ir_add_local_generated(proc, ir_type(v), false);
ir_emit_store(proc, ptr, v);
auto args = array_make<irValue *>(ir_allocator(), 4);
@@ -3255,7 +3254,7 @@ void ir_addr_store(irProcedure *proc, irAddr const &addr, irValue *value) {
}
} else if (addr.kind == irAddr_Context) {
irValue *old = ir_emit_load(proc, ir_find_or_generate_context_ptr(proc));
irValue *next = ir_add_local_generated(proc, t_context);
irValue *next = ir_add_local_generated(proc, t_context, true);
ir_emit_store(proc, next, old);
ir_push_context_onto_stack(proc, next);
@@ -3579,6 +3578,7 @@ irValue *ir_emit_arith(irProcedure *proc, TokenKind op, irValue *left, irValue *
GB_ASSERT(is_type_array(type));
Type *elem_type = base_array_type(type);
// TODO(bill): Should this be zero initialized?
irValue *res = ir_add_local_generated(proc, type);
i64 count = base_type(type)->Array.count;
@@ -3624,7 +3624,7 @@ irValue *ir_emit_arith(irProcedure *proc, TokenKind op, irValue *left, irValue *
}
}
irValue *res = ir_add_local_generated(proc, type);
irValue *res = ir_add_local_generated(proc, type, false); // NOTE: initialized in full later
irValue *a = ir_emit_struct_ev(proc, left, 0);
irValue *b = ir_emit_struct_ev(proc, left, 1);
irValue *c = ir_emit_struct_ev(proc, right, 0);
@@ -4330,7 +4330,7 @@ void ir_fill_string(irProcedure *proc, irValue *string_ptr, irValue *data, irVal
}
irValue *ir_emit_string(irProcedure *proc, irValue *elem, irValue *len) {
irValue *str = ir_add_local_generated(proc, t_string);
irValue *str = ir_add_local_generated(proc, t_string, false);
ir_fill_string(proc, str, elem, len);
return ir_emit_load(proc, str);
}
@@ -4364,7 +4364,7 @@ irValue *ir_add_local_slice(irProcedure *proc, Type *slice_type, irValue *base,
elem = ir_emit_ptr_offset(proc, elem, low);
irValue *slice = ir_add_local_generated(proc, slice_type);
irValue *slice = ir_add_local_generated(proc, slice_type, false);
ir_fill_slice(proc, slice, elem, len);
return slice;
}
@@ -4479,7 +4479,7 @@ irValue *ir_emit_conv(irProcedure *proc, irValue *value, Type *t) {
if (value->kind == irValue_Constant) {
if (is_type_any(dst)) {
irValue *default_value = ir_add_local_generated(proc, default_type(src_type));
irValue *default_value = ir_add_local_generated(proc, default_type(src_type), false);
ir_emit_store(proc, default_value, value);
return ir_emit_conv(proc, ir_emit_load(proc, default_value), t_any);
} else if (dst->kind == Type_Basic) {
@@ -4596,7 +4596,7 @@ irValue *ir_emit_conv(irProcedure *proc, irValue *value, Type *t) {
if (is_type_complex(src) && is_type_complex(dst)) {
Type *ft = base_complex_elem_type(dst);
irValue *gen = ir_add_local_generated(proc, dst);
irValue *gen = ir_add_local_generated(proc, dst, false);
irValue *real = ir_emit_conv(proc, ir_emit_struct_ev(proc, value, 0), ft);
irValue *imag = ir_emit_conv(proc, ir_emit_struct_ev(proc, value, 1), ft);
ir_emit_store(proc, ir_emit_struct_ep(proc, gen, 0), real);
@@ -4634,7 +4634,7 @@ irValue *ir_emit_conv(irProcedure *proc, irValue *value, Type *t) {
if (are_types_identical(vt, src_type)) {
ir_emit_comment(proc, str_lit("union - child to parent"));
gbAllocator a = ir_allocator();
irValue *parent = ir_add_local_generated(proc, t);
irValue *parent = ir_add_local_generated(proc, t, true);
ir_emit_store_union_variant(proc, parent, value, vt);
return ir_emit_load(proc, parent);
}
@@ -4721,7 +4721,7 @@ irValue *ir_emit_conv(irProcedure *proc, irValue *value, Type *t) {
}
if (is_type_string(src) && is_type_u8_slice(dst)) {
irValue *elem = ir_string_elem(proc, value);
irValue *elem_ptr = ir_add_local_generated(proc, ir_type(elem));
irValue *elem_ptr = ir_add_local_generated(proc, ir_type(elem), false);
ir_emit_store(proc, elem_ptr, elem);
irValue *len = ir_string_len(proc, value);
@@ -7815,10 +7815,10 @@ void ir_build_range_interval(irProcedure *proc, AstBinaryExpr *node, Type *val_t
if (val_type == nullptr) {
val_type = ir_type(lower);
}
irValue *value = ir_add_local_generated(proc, val_type);
irValue *value = ir_add_local_generated(proc, val_type, false);
ir_emit_store(proc, value, lower);
irValue *index = ir_add_local_generated(proc, t_int);
irValue *index = ir_add_local_generated(proc, t_int, false);
ir_emit_store(proc, index, ir_const_int(0));
loop = ir_new_block(proc, nullptr, "for.interval.loop");
@@ -7871,7 +7871,7 @@ void ir_build_range_enum(irProcedure *proc, Type *enum_type, Type *val_type, irV
irValue *values = ir_emit_load(proc, ir_emit_struct_ep(proc, eti_ptr, 2));
irValue *values_data = ir_slice_elem(proc, values);
irValue *offset_ = ir_add_local_generated(proc, t_int);
irValue *offset_ = ir_add_local_generated(proc, t_int, false);
ir_emit_store(proc, offset_, v_zero);
irBlock *loop = ir_new_block(proc, nullptr, "for.enum.loop");
@@ -8357,7 +8357,7 @@ void ir_build_stmt_internal(irProcedure *proc, Ast *node) {
if (is_type_pointer(type_deref(ir_type(array)))) {
array = ir_emit_load(proc, array);
}
count_ptr = ir_add_local_generated(proc, t_int);
count_ptr = ir_add_local_generated(proc, t_int, false);
ir_emit_store(proc, count_ptr, ir_const_int(et->Array.count));
ir_build_range_indexed(proc, array, val0_type, count_ptr, &val, &key, &loop, &done);
break;
@@ -8379,7 +8379,7 @@ void ir_build_stmt_internal(irProcedure *proc, Ast *node) {
count_ptr = ir_emit_struct_ep(proc, slice, 1);
slice = ir_emit_load(proc, slice);
} else {
count_ptr = ir_add_local_generated(proc, t_int);
count_ptr = ir_add_local_generated(proc, t_int, false);
ir_emit_store(proc, count_ptr, ir_slice_len(proc, slice));
}
ir_build_range_indexed(proc, slice, val0_type, count_ptr, &val, &key, &loop, &done);
@@ -8391,7 +8391,7 @@ void ir_build_stmt_internal(irProcedure *proc, Ast *node) {
string = ir_emit_load(proc, string);
}
if (is_type_untyped(expr_type)) {
irValue *s = ir_add_local_generated(proc, default_type(ir_type(string)));
irValue *s = ir_add_local_generated(proc, default_type(ir_type(string)), false);
ir_emit_store(proc, s, string);
string = ir_emit_load(proc, s);
}