From cfabc0e61f2c3dc00fd367e3f9bf1a89461971ef Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 28 Nov 2017 22:12:33 +0000 Subject: Remove `using` in arrays; Remove `_` non-exported struct fields Start determining slow parts of the compiler --- src/ir.cpp | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) (limited to 'src/ir.cpp') diff --git a/src/ir.cpp b/src/ir.cpp index b8efb563e..3128bfd5d 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -5335,7 +5335,7 @@ bool ir_is_elem_const(irModule *m, AstNode *elem, Type *elem_type) { elem = elem->FieldValue.value; } TypeAndValue tav = type_and_value_of_expr(m->info, elem); - GB_ASSERT(tav.mode != Addressing_Invalid); + GB_ASSERT_MSG(tav.mode != Addressing_Invalid, "%s %s", expr_to_string(elem), type_to_string(tav.type)); return tav.value.kind != ExactValue_Invalid; } @@ -5517,6 +5517,7 @@ irAddr ir_build_addr(irProcedure *proc, AstNode *expr) { bool deref = is_type_pointer(t); t = base_type(type_deref(t)); + GB_ASSERT_MSG(is_type_indexable(t), "%s %s", type_to_string(t), expr_to_string(expr)); if (is_type_map(t)) { irValue *map_val = ir_build_addr_ptr(proc, ie->expr); @@ -5532,18 +5533,6 @@ irAddr ir_build_addr(irProcedure *proc, AstNode *expr) { } irValue *using_addr = nullptr; - if (!is_type_indexable(t)) { - // Using index expression - Entity *using_field = find_using_index_expr(t); - if (using_field != nullptr) { - Selection sel = lookup_field(a, t, using_field->token.string, false); - irValue *e = ir_build_addr_ptr(proc, ie->expr); - using_addr = ir_emit_deep_field_gep(proc, e, sel); - - t = using_field->type; - } - } - switch (t->kind) { case Type_Vector: { -- cgit v1.2.3