aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index b453757367..569de611a8 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -2640,15 +2640,16 @@ IrInstruction *ir_gen(CodeGen *codegen, AstNode *node, BlockContext *scope, IrEx
IrInstruction *result = ir_gen_node_extra(irb, node, scope, LValPurposeNone);
assert(result);
+ if (irb->exec->invalid)
+ return codegen->invalid_instruction;
IrInstruction *return_instruction = ir_build_return(irb, result->source_node, result);
assert(return_instruction);
- if (result == codegen->invalid_instruction)
- return codegen->invalid_instruction;
-
- if (!ir_goto_pass2(irb))
+ if (!ir_goto_pass2(irb)) {
+ irb->exec->invalid = true;
return codegen->invalid_instruction;
+ }
return return_instruction;
}