diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-04-20 17:58:04 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-04-20 17:58:04 -0700 |
| commit | c69a95f64bc616b9d4185687edeb08544e34a34c (patch) | |
| tree | 0f75470619b6d5aea8cf90a55ac76919faf655e1 /src | |
| parent | a008fb0a71657ad02a05e312680f960caded414f (diff) | |
| download | zig-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.zig | 6 |
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; |
