authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-12-08 02:15:10-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-12-08 02:15:48-05:00
log0ab953acb2b7192c5907a1c9d9ed9cf850530af2
tree9bddba043688aa39c34601530f2db51d126f5e93
parentd4a93dbac5b38bda79dc26872fcb87980ab4d272

IR: better array len instruction

reference the "len" field directly instead of looking it up by name since we already know exactly where the field metadata is

1 files changed, 1 insertions(+), 2 deletions(-)

src/ir.cpp+1-2
...@@ -6572,8 +6572,7 @@ static TypeTableEntry *ir_analyze_instruction_array_len(IrAnalyze *ira,...@@ -6572,8 +6572,7 @@ static TypeTableEntry *ir_analyze_instruction_array_len(IrAnalyze *ira,
6572 len_val->data.x_bignum.data.x_uint, depends_on_compile_var);6572 len_val->data.x_bignum.data.x_uint, depends_on_compile_var);
6573 }6573 }
6574 }6574 }
6575 TypeStructField *field = find_struct_type_field(canon_type, buf_create_from_str("len"));6575 TypeStructField *field = &canon_type->data.structure.fields[slice_len_index];
6576 assert(field);
6577 IrInstruction *len_ptr = ir_build_struct_field_ptr(&ira->new_irb, array_len_instruction->base.scope,6576 IrInstruction *len_ptr = ir_build_struct_field_ptr(&ira->new_irb, array_len_instruction->base.scope,
6578 array_len_instruction->base.source_node, array_value, field);6577 array_len_instruction->base.source_node, array_value, field);
6579 len_ptr->type_entry = get_pointer_to_type(ira->codegen, ira->codegen->builtin_types.entry_usize, true);6578 len_ptr->type_entry = get_pointer_to_type(ira->codegen, ira->codegen->builtin_types.entry_usize, true);