authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-27 21:30:11-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-27 21:30:11-05:00
logae20574d5efaa7c63d78299b761eee38515b5865
tree39a17d6179e8afdd2edac5396667607eb3d50a93
parentc58633ef17beb908fdfed46d7ca13e08d0d93648
signature Commit is signed but in an unrecognized format.

add missing spill for for loops with pointer elems


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

src/ir.cpp+2-3
......@@ -8477,9 +8477,8 @@ static IrInstSrc *ir_gen_for_expr(IrBuilderSrc *irb, Scope *parent_scope, AstNod
84778477 ResultLocPeerParent *peer_parent = ir_build_result_peers(irb, cond_br_inst, end_block, result_loc, is_comptime);
84788478
84798479 ir_set_cursor_at_end_and_append_block(irb, body_block);
8480 Scope *elem_ptr_scope = node->data.for_expr.elem_is_ptr ? parent_scope : &spill_scope->base;
8481 IrInstSrc *elem_ptr = ir_build_elem_ptr(irb, elem_ptr_scope, node, array_val_ptr, index_val, false,
8482 PtrLenSingle, nullptr);
8480 IrInstSrc *elem_ptr = ir_build_elem_ptr(irb, &spill_scope->base, node, array_val_ptr, index_val,
8481 false, PtrLenSingle, nullptr);
84838482 // TODO make it an error to write to element variable or i variable.
84848483 Buf *elem_var_name = elem_node->data.symbol_expr.symbol;
84858484 ZigVar *elem_var = ir_create_var(irb, elem_node, parent_scope, elem_var_name, true, false, false, is_comptime);