aboutsummaryrefslogtreecommitdiff
path: root/src/AstGen.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-05-13 17:56:01 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-05-13 17:56:01 -0700
commit78632894dabec3c20ee2ff4348e03cfa565477ef (patch)
tree6019fb67dc5b1a5d71df11522b37a6b2d99738df /src/AstGen.zig
parente83cf6a4542b34e7fd64028a3b1b89dacdc2e166 (diff)
downloadzig-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.zig10
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;
}