authorgravatar for jacoblevgw@gmail.comJacob G-W <jacoblevgw@gmail.com> 2021-03-16 08:12:11-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-03-16 14:47:54-07:00
loge430f3f7e06cd331c03db98e5feb33047ade96be
tree4fb43fdafc0d3358ea29768bc5595cc8a5090efb
parent099af0e008162adf5cb7dc08946bd19b20db817b

zir-memory-layout: fix @setEvalBranchQuota

also make emitBackwardBranch fail correctly

1 files changed, 4 insertions(+), 6 deletions(-)

src/Sema.zig+4-6
......@@ -599,8 +599,8 @@ fn zirSetEvalBranchQuota(
599599 const src = inst_data.src();
600600 try sema.requireFunctionBlock(block, src);
601601 const quota = try sema.resolveAlreadyCoercedInt(block, src, inst_data.operand, u32);
602 if (b.branch_quota.* < quota)
603 b.branch_quota.* = quota;
602 if (sema.branch_quota < quota)
603 sema.branch_quota = quota;
604604 return sema.mod.constVoid(block.arena, .unneeded);
605605}
606606
......@@ -2960,11 +2960,9 @@ fn safetyPanic(sema: *Sema, block: *Scope.Block, src: LazySrcLoc, panic_id: Pani
29602960fn emitBackwardBranch(sema: *Sema, block: *Scope.Block, src: LazySrcLoc) !void {
29612961 const shared = block.inlining.?.shared;
29622962 shared.branch_count += 1;
2963 if (shared.branch_count > block.branch_quota.*) {
2963 if (shared.branch_count > sema.branch_quota) {
29642964 // TODO show the "called from here" stack
2965 return mod.fail(&block.base, src, "evaluation exceeded {d} backwards branches", .{
2966 block.branch_quota.*,
2967 });
2965 return sema.mod.fail(&block.base, src, "evaluation exceeded {d} backwards branches", .{sema.branch_quota});
29682966 }
29692967}
29702968