Fix for in for pointer to map expressions

This commit is contained in:
gingerBill
2020-03-22 20:56:46 +00:00
parent 8dba0e332c
commit dfc63dcb60

View File

@@ -3967,6 +3967,10 @@ irValue *ir_map_entries(irProcedure *proc, irValue *value) {
irValue *ir_map_entries_ptr(irProcedure *proc, irValue *value) {
gbAllocator a = ir_allocator();
Type *t = base_type(type_deref(ir_type(value)));
if (is_type_pointer(t)) {
value = ir_emit_load(proc, value);
t = base_type(type_deref(t));
}
GB_ASSERT_MSG(t->kind == Type_Map, "%s", type_to_string(t));
init_map_internal_types(t);
Type *gst = t->Map.generated_struct_type;
@@ -10020,7 +10024,7 @@ void ir_build_stmt_internal(irProcedure *proc, Ast *node) {
gbAllocator a = ir_allocator();
irAddr addr = ir_build_addr(proc, expr);
irValue *map = ir_addr_get_ptr(proc, addr);
if (is_type_pointer(type_deref(ir_addr_type(addr)))) {
if (is_type_pointer(ir_addr_type(addr))) {
map = ir_addr_load(proc, addr);
}
irValue *entries_ptr = ir_map_entries_ptr(proc, map);