From c69a95f64bc616b9d4185687edeb08544e34a34c Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 20 Apr 2021 17:58:04 -0700 Subject: [PATCH] AstGen: fix store_to_block_ptr elision for switch statements to make sure it matches the expected block --- src/AstGen.zig | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/AstGen.zig b/src/AstGen.zig index 8093cb0184de84e39be30a96f1938f30598e8812..43947a07fa7eef612b051691aec146f85c03f85a 100644 --- a/src/AstGen.zig +++ b/src/AstGen.zig @@ -4952,13 +4952,15 @@ fn switchExpr( .rhs = zir_datas[break_inst].@"break".operand, }; zir_datas[break_inst].@"break".operand = parent_gz.indexToRef(store_inst); - } else { - assert(zir_datas[store_inst].bin.lhs == block_scope.rl_ptr); + } else if (zir_datas[store_inst].bin.lhs == block_scope.rl_ptr) { scalar_cases_payload.items[body_len_index] -= 1; astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[start_index..extra_index]); extra_index += 1; astgen.extra.appendAssumeCapacity(scalar_cases_payload.items[extra_index]); extra_index += 1; + } else { + extra_index += 2; + astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[start_index..extra_index]); } } extra_index = 0; -- 2.54.0