Commit c69a95f64b

Andrew Kelley <andrew@ziglang.org>
2021-04-21 02:58:04
AstGen: fix store_to_block_ptr elision for switch statements
to make sure it matches the expected block
1 parent a008fb0
Changed files (1)
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;