aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-04-23 18:06:33 -0400
committerAndrew Kelley <superjoe30@gmail.com>2018-04-23 18:06:33 -0400
commit15bf0c1541479870dff1f8d64a3746c337f901ef (patch)
tree18528ec7e1dfe228ff372ab9e7958db72faebef3 /src/ir.cpp
parent89a4c373d3756baeac9d2780b1249ada37961d16 (diff)
downloadzig-15bf0c1541479870dff1f8d64a3746c337f901ef.tar.gz
zig-15bf0c1541479870dff1f8d64a3746c337f901ef.zip
fix interaction between defer and labeled break
closes #830
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index cd00fc6230..86c77758b2 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -3147,6 +3147,9 @@ static IrInstruction *ir_gen_block(IrBuilder *irb, Scope *parent_scope, AstNode
if (block_node->data.block.name == nullptr || incoming_blocks.length == 0) {
return noreturn_return_value;
}
+
+ ir_set_cursor_at_end_and_append_block(irb, scope_block->end_block);
+ return ir_build_phi(irb, parent_scope, block_node, incoming_blocks.length, incoming_blocks.items, incoming_values.items);
} else {
incoming_blocks.append(irb->current_basic_block);
incoming_values.append(ir_mark_gen(ir_build_const_void(irb, parent_scope, block_node)));