aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-04-20 17:58:04 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-04-20 17:58:04 -0700
commitc69a95f64bc616b9d4185687edeb08544e34a34c (patch)
tree0f75470619b6d5aea8cf90a55ac76919faf655e1 /src
parenta008fb0a71657ad02a05e312680f960caded414f (diff)
downloadzig-c69a95f64bc616b9d4185687edeb08544e34a34c.tar.gz
zig-c69a95f64bc616b9d4185687edeb08544e34a34c.zip
AstGen: fix store_to_block_ptr elision for switch statements
to make sure it matches the expected block
Diffstat (limited to 'src')
-rw-r--r--src/AstGen.zig6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/AstGen.zig b/src/AstGen.zig
index 8093cb0184..43947a07fa 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;