From a483e38df62f73dc0cdadee6faf3e083094210d4 Mon Sep 17 00:00:00 2001 From: Timon Kruiper Date: Wed, 7 Apr 2021 13:27:36 +0200 Subject: [PATCH] stage2: fix bug where invalid ZIR was generated The following code caused an assertion to be hit: ``` pub fn main() void { var e: anyerror!c_int = error.Foo; const i = e catch 69; assert(69 - i == 0); } ``` --- src/Module.zig | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Module.zig b/src/Module.zig index 18dfc6bae0..dab3319b2e 100644 --- a/src/Module.zig +++ b/src/Module.zig @@ -2863,8 +2863,9 @@ fn astgenAndSemaFn( _ = try AstGen.expr(&gen_scope, params_scope, .none, body_node); - if (gen_scope.instructions.items.len == 0 or - !astgen.instructions.items(.tag)[gen_scope.instructions.items.len - 1] + const inst_tags = astgen.instructions.items(.tag); + if (inst_tags.len == 0 or + !inst_tags[inst_tags.len - 1] .isNoReturn()) { // astgen uses result location semantics to coerce return operands.