authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-04-20 17:58:04-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-04-20 17:58:04-07:00
logc69a95f64bc616b9d4185687edeb08544e34a34c
tree0f75470619b6d5aea8cf90a55ac76919faf655e1
parenta008fb0a71657ad02a05e312680f960caded414f

AstGen: fix store_to_block_ptr elision for switch statements

to make sure it matches the expected block

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

src/AstGen.zig+4-2
...@@ -4952,13 +4952,15 @@ fn switchExpr(...@@ -4952,13 +4952,15 @@ fn switchExpr(
4952 .rhs = zir_datas[break_inst].@"break".operand,4952 .rhs = zir_datas[break_inst].@"break".operand,
4953 };4953 };
4954 zir_datas[break_inst].@"break".operand = parent_gz.indexToRef(store_inst);4954 zir_datas[break_inst].@"break".operand = parent_gz.indexToRef(store_inst);
4955 } else {4955 } else if (zir_datas[store_inst].bin.lhs == block_scope.rl_ptr) {
4956 assert(zir_datas[store_inst].bin.lhs == block_scope.rl_ptr);
4957 scalar_cases_payload.items[body_len_index] -= 1;4956 scalar_cases_payload.items[body_len_index] -= 1;
4958 astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[start_index..extra_index]);4957 astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[start_index..extra_index]);
4959 extra_index += 1;4958 extra_index += 1;
4960 astgen.extra.appendAssumeCapacity(scalar_cases_payload.items[extra_index]);4959 astgen.extra.appendAssumeCapacity(scalar_cases_payload.items[extra_index]);
4961 extra_index += 1;4960 extra_index += 1;
4961 } else {
4962 extra_index += 2;
4963 astgen.extra.appendSliceAssumeCapacity(scalar_cases_payload.items[start_index..extra_index]);
4962 }4964 }
4963 }4965 }
4964 extra_index = 0;4966 extra_index = 0;