Commit b3ff28189c

Andrew Kelley <superjoe30@gmail.com>
2016-11-27 05:24:43
IR: fix crash when duplicate label error
1 parent a52ede6
Changed files (1)
src
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;
 }