authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-02-18 11:56:05-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-02-18 19:17:21-07:00
log209e83f3950e8cb0daca389a4fa7cd79fe60394b
tree175d3233e0f5a5ac69b6fc4171e995b35156fa59
parent8c96d0dddddfb4cd597661ff47551fcaf67cbf39

AstGen: fix ZIR for for loops accessing instruction out of block


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

src/AstGen.zig+2-2
...@@ -6413,6 +6413,8 @@ fn forExpr(...@@ -6413,6 +6413,8 @@ fn forExpr(
6413 defer loop_scope.unstack();6413 defer loop_scope.unstack();
6414 defer loop_scope.labeled_breaks.deinit(gpa);6414 defer loop_scope.labeled_breaks.deinit(gpa);
64156415
6416 const index = try loop_scope.addUnNode(.load, index_ptr, node);
6417
6416 var cond_scope = parent_gz.makeSubBlock(&loop_scope.base);6418 var cond_scope = parent_gz.makeSubBlock(&loop_scope.base);
6417 defer cond_scope.unstack();6419 defer cond_scope.unstack();
64186420
...@@ -6420,7 +6422,6 @@ fn forExpr(...@@ -6420,7 +6422,6 @@ fn forExpr(
6420 if (!any_len_checks) {6422 if (!any_len_checks) {
6421 return astgen.failNode(node, "TODO: handle infinite for loop", .{});6423 return astgen.failNode(node, "TODO: handle infinite for loop", .{});
6422 }6424 }
6423 const index = try cond_scope.addUnNode(.load, index_ptr, node);
6424 const cond = try cond_scope.addPlNode(.cmp_lt, node, Zir.Inst.Bin{6425 const cond = try cond_scope.addPlNode(.cmp_lt, node, Zir.Inst.Bin{
6425 .lhs = index,6426 .lhs = index,
6426 .rhs = len,6427 .rhs = len,
...@@ -10695,7 +10696,6 @@ const Scope = struct {...@@ -10695,7 +10696,6 @@ const Scope = struct {
10695 @"function parameter",10696 @"function parameter",
10696 @"local constant",10697 @"local constant",
10697 @"local variable",10698 @"local variable",
10698 @"loop index capture",
10699 @"switch tag capture",10699 @"switch tag capture",
10700 capture,10700 capture,
10701 };10701 };