diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-05-13 17:56:01 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-05-13 17:56:01 -0700 |
| commit | 78632894dabec3c20ee2ff4348e03cfa565477ef (patch) | |
| tree | 6019fb67dc5b1a5d71df11522b37a6b2d99738df /src/AstGen.zig | |
| parent | e83cf6a4542b34e7fd64028a3b1b89dacdc2e166 (diff) | |
| download | zig-78632894dabec3c20ee2ff4348e03cfa565477ef.tar.gz zig-78632894dabec3c20ee2ff4348e03cfa565477ef.zip | |
AstGen: fix elision of store_to_block_ptr for condbr
Diffstat (limited to 'src/AstGen.zig')
| -rw-r--r-- | src/AstGen.zig | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/AstGen.zig b/src/AstGen.zig index c8225602ae..3b77462fde 100644 --- a/src/AstGen.zig +++ b/src/AstGen.zig @@ -4588,12 +4588,12 @@ fn finishThenElseBlock( } else { _ = try else_scope.addBreak(break_tag, main_block, .void_value); } - const block_ref = parent_gz.indexToRef(main_block); if (strat.elide_store_to_block_ptr_instructions) { - try setCondBrPayloadElideBlockStorePtr(condbr, cond, then_scope, else_scope, block_ref); + try setCondBrPayloadElideBlockStorePtr(condbr, cond, then_scope, else_scope, block_scope.rl_ptr); } else { try setCondBrPayload(condbr, cond, then_scope, else_scope); } + const block_ref = parent_gz.indexToRef(main_block); switch (rl) { .ref => return block_ref, else => return rvalue(parent_gz, parent_scope, rl, block_ref, node), @@ -4909,7 +4909,7 @@ fn setCondBrPayloadElideBlockStorePtr( cond: Zir.Inst.Ref, then_scope: *GenZir, else_scope: *GenZir, - main_block: Zir.Inst.Ref, + block_ptr: Zir.Inst.Ref, ) !void { const astgen = then_scope.astgen; @@ -4930,7 +4930,7 @@ fn setCondBrPayloadElideBlockStorePtr( for (then_scope.instructions.items) |src_inst| { if (zir_tags[src_inst] == .store_to_block_ptr) { - if (zir_datas[src_inst].bin.lhs == main_block) { + if (zir_datas[src_inst].bin.lhs == block_ptr) { astgen.extra.items[then_body_len_index] -= 1; continue; } @@ -4939,7 +4939,7 @@ fn setCondBrPayloadElideBlockStorePtr( } for (else_scope.instructions.items) |src_inst| { if (zir_tags[src_inst] == .store_to_block_ptr) { - if (zir_datas[src_inst].bin.lhs == main_block) { + if (zir_datas[src_inst].bin.lhs == block_ptr) { astgen.extra.items[else_body_len_index] -= 1; continue; } |
